개념
- 동기 vs 비동기
- 처리해야 할 작업들을 어떠한 ‘흐름’으로 처리 할 것인가에 대한 관점
- 블로킹 vs 논블로킹
- 처리되어야 하는 (하나의) 작업이, 전체적인 작업 ‘흐름’을 막느냐 안막느냐에 대한 관점
시나리오를 통해 설명한 예시
- 팀장 - 업무를 분배
- 사원 A,B,C,D - 분배된 업무를 수행
시나리오 1 : 비동기 + 논블로킹
- 팀장이 사원 A,B,C,D 모두에게 업무를 분배
- 사원들은 분배된 업무를 동시에 처리
- 각자 업무가 완료되면 사원들은 그 즉시 팀장에게 보고
- 논블로킹 - 다른 일의 완료 여부와 무관하게 업무를 진행
시나리오 2 : 동기 + 논블로킹
- 팀장이 사원 A에게 업무를 지시
- 사원 A가 업무를 마칠 때까지 팀장이 기다림
- 완료 여부를 주기적으로 물어봄
- 동기 - 끝날 때까지 기다림
- 사원 A가 업무를 끝내면 확인
- 팀장이 사원 B에게 업무를 지시
- 사원 B가 업무를 마칠 때까지 팀장이 기다림
- 완료 여부를 주기적으로 물어봄
- 동기 - 끝날 때까지 기다림
- (…)
시나리오 3 : 비동기 + 블로킹
- 팀장이 사원 A에게 업무를 지시
- 팀장은 사원 B, C, D에게 업무를 지시하려 하지만, 사원 A는 팀장을 붙잡음
- 사원 A가 업무를 완료
- 팀장이 사원 B에게 업무를 지시
- 팀장은 사원 C, D에게 업무를 지시하려 하지만, 사원 B는 팀장을 붙잡음…
- (…)
시나리오 4 : 동기 + 블로킹
- 시나리오 2와 동일
- 동기적으로 처리하기로 했다면 논블록킹/블록킹 상관 없이 작업이 끝날 때까지 기다림
출처