동기/비동기 & 블록/논블록

개념

  • 동기 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와 동일
  • 동기적으로 처리하기로 했다면 논블록킹/블록킹 상관 없이 작업이 끝날 때까지 기다림

출처