실용주의 프로그래머 6장 동시성 서론

6장 동시성 서론

데이비드 토머스, 앤드류 헌트

Alt text

느낌표 ! (인상 깊은 문장 | 문맥)

동시성(concurrency)은 둘이 상의 코드 조각이 실행될 때 동시에 실행 중인 것처럼 행동하는 것이다.

p.241

병렬성(parallelism)이란 실제로 동시에 실행되는 것이다.

p.241

동시성이나 병렬성을 지원하는 코드를 쓰는 건 왜 그렇게 어려울까? 한 가지 이유는 우리가 프로그래밍을 순차적 시스템으로 배워서다. 그리고 우리가 쓰는 언어의 기능이 순차적으로 사용할 때는 비교적 안전하지만, 동시에 두 가지 일이 일어날 수 있으면 골칫거리로 변해서다. 가장 큰 문제는 공유상태다. 단순히 전역 변수만을 이야기하는 것이 아니다. 둘 이상의 코드 뭉치가 하나의 변경 가능한 데이터를 참조하고 있다면 공유 상태가 존재하는 것이다.

p.242

비동기 호출을 통해 프로그래밍을 하다보면 간단한 문제의 경우는 아무런 문제가 느껴지지 않지만 비동기 호출이 얽히기 시작하면 에러 핸들링부터 난관인 경우를 경험하곤 한다. 물론 그 문제를 쉽게 풀 수 있는 방법이 존재하겠다만 동시성을 지원한다는 것은 꽤 골치 아플 가능성도 있다. 이 때 저자는 공유상태라는 원흉을 뽑는다. 책임이 명확해야 서로의 영역을 덜 침범할 것이기 때문일 것이다.

액터 모델에서는 프로세스들이 독립적으로 수행되며 서로 데이터를 공유하지 않는다. 대신 채널을 통해 잘 정의된 단순한 의미론을 사용하여 의사소통한다.

p.243

액터의 행동을 나열하고 프로그래밍을 한다면 데이터의 흐름을 알기엔 매우 직관적일 것 같다. 액터 모델을 사용하면 어떤 식의 장점이 있는지 아직 경험해보지 못했는데 좀 더 찾아보고 추후 필요할 때 사용해봐야겠다.

6장 서론 느낌

6장 서론에서는 액터 모델을 사용해서 동시성 문제를 간소화해보고 싶은 생각이 들게한다.


실용주의 프로그래머 Topic 32

Topic 32 설정

실용주의 프로그래머 Topic 33

Topic 33 시간적 결합 깨트리기

NCloud LB & SourcePipeline 구축하기
tech collection 서비스 성능 개선하기
Selenium 복권 구매 자동화 만들어보기
디자인 패턴
책 리뷰
블로그 챌린지