들어가며
<aside>
💡
동시성 논리흐름을 생성하는 2가지 방법
- 각각의 흐름에 대해 별도의 프로세스 사용 : 프로세스 기반 동시성 프로그래밍
- 우리 자신의 논리 흐름을 생성, 명시적으로 흐름들을 스케줄하기 위한 I / O 다중화 : I / O 다중화 기반 동시성 프로그래밍
</aside>
Thread와 Thread에 기초한 논리 흐름
<aside>
💡
Thread란?
스레드 실행 모델
<aside>
💡

동시성 스레드의 실행 (출처 : CSAPP Fig.12.12)
</aside>
스레드와 프로세스의 다른 점
- 스레드 컨텍스트가 프로세스 컨텍스트보다 훨씬 더 작음
- 때문에 Context Switching이 더 빠름
- 스레드는 엄격한 부모 - 자식 관계가 아님
- 하나의 프로세스 안에 속만 모든 스레드 = 동등한 풀을 이룸
- 어떤 스레드가 다른 스레드를 만들었는지와는 아무 관련이 없음
- 메인 스레드와 피어 스레드를 구분하는 방법
- 메인 스레드는 항상 프로세스에서 돌아가는 첫번째 스레드라는 의미만 가짐
- 동등한 풀(Pool of Peers)은 결국
- 스레드가 자신의 피어 모두를 죽이거나
- 종료하는 것을 기다리거나
- 동일한 공유 자원에 접근이 가능
- 참고 자료