메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

동시성 프로그래밍

lafe0***

|

2022-04-24

동시성 프로그래밍

Rust 언어를 중심으로 어셈블리어, C 언어를 사용해 CPU 아토믹 처리, 소프트웨어 트랜잭셔널 메모리, async/await 등 동시성 프로그래밍과 관련된 이론적 배경부터 구현까지 설계자 입장에서 살펴본다.

  • 저자 : 다카노 유키
  • 번역 : 김모세
  • 출간 : 2022-04-05

동시성은 정말 어렵다. 나는 여전히 어려움을 느끼고 있고, 그것을 해소하고자 4월 서평 도서로 이 책을 선택했다.

 

## 기록

 

동시성 → 2개 이상의 프로세스가 동시에 계산 중인 상태 (실행 상태 + 대기 상태)  

병렬성 → 여러 프로세스가 동시에 계산을 실행하는 상태 (Only 실행 상태)

 

병렬화를 통한 고속화  

→ 병렬화를 함으로써 수반되는 오버헤드가 있음. 이를 포함한 수행시간이 순차 실행보다 빠른 경우에 병렬화를 고려(적용) 해야 한다.

 

병렬 처리 → 성능 향상을 위해 필요함

 

동시 처리

  - 장점

    1. 효율적인 계산 리소스 활용: A라는 일 수행 중에 B 수행

    2. 공평성 (공정성): 동시에 수행하지 못하는 것은 한쪽 처리에 치우쳐진 것

    3. 편리성: 공평성과 비슷한 맥락에 존재

  - 단점

    - 복잡성: 계산 경로 수의 급증

 

Rust 에서 `if`, `match`(switch 와 유사함) 는 식이어서 값을 반환해야 한다. → 엄청 신기하다.

 

> 비동기 프로그래밍은 콜백을 이용해서도 기술된다고 설명했다. 하지만 콜백을 이용하는 방법은 가독성이 낮아진다. 특히 콜백을 연속해서 호출하면 매우 읽기 어려운 코드가 되어 콜백 지옥이라 불리기도 한다. 

 

완전 공감.

 

## 좋았던 점

 

- 도식이 있어서 (비교적) 이해하기 쉽다. 처음에 동시성과 병렬성 설명을 보면서 뭐가 다른지 이해하기 어려웠는데, 그림을 보니까 훨씬 이해하기 쉬웠다.

- 코드에 번호를 붙여 설명이 기술되어 있는데, 설명이 자세해서 Rust를 몰라도 전체적인 흐름을 이해하는 데 무리가 없었다. (그래도 여전히 어렵다.)

 

## 아쉬웠던 점

 

- 어렵다!  

내가 기대한 것보다 더 깊이가 깊어서 어려웠다. 정신 놓고 읽기에 마냥 쉬운 책은 아니었다. 어영부영 읽는 걸 많이 미루기도 했다. 게다가 이름은 익히 들었지만, 자주 접한 언어도 아닐뿐더러 익숙한 언어가 아니다 보니 언어적인 측면에서도 수월하게 읽을 수 없는 어려움도 있었다. 더 얕고 쉬운 책을 원한 나에게는 적합하지 못했다.

 

---

 

한빛미디어 \<나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?