본문 바로가기
TIL

실용주의 프로그래머 6장: 동시성 Concurrency

by sun_HY 2024. 8. 20.

6장. 동시성

 

되돌릴 수 있는 의사 결정을 내리는 구체적인 방법

 

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

병렬성: 실제로 동시에 실행되는 것

 

동시성을 얻으려면 실행 중에 코드의 다른 부분으로 실행을 전환할 수 있는 환경에서 코드를 구동해야 한다.

스레드, 프로세스 등을 사용하여 구현 가능

 

병렬성을 얻으려면 두 가지 일을 동시에 할 수 있는 하드웨어가 필요

 

세상은 비동기적이기 때문에 동시성은 필수

 

 

33. 시간적 결합 깨뜨리기

 

소프트웨어의 설계 요소로서 시간의 역할

1. 동시성 (동시에 일어나는 일들)

2. 순서 (시간의 흐름 속에서 일들의 상대적인 위치)

 

동시에 수행할 수 있는데 그러고 있지 않은 요소 찾아내서 병렬성 극대화하기

외부 서비스에 접근하거나 데이터베이스를 조회할 때 등 다른 일을 할 수 있다

 

 

34. 공유 상태는 틀린 상태

 

semaphore: 한 번에 한 사람만 가질 수 있는 무언가

 

 

35. 액터와 프로세스

 

액터: 자신만의 비공개 지역 state를 가진 독립적인 가상 처리 장치

 - mailbox에 저장된 메시지 순차적 처리

 - 공유 상태 없는 동시성 

 

프로세스: 더 일반적인 가상 처리기

 


출처: 실용주의 프로그래머 (데이비드 토머스, 앤드류 헌트) 20주년 기념판

728x90