동기/비동기, 블로킹/논블로킹

otto_dev·2022년 7월 21일
0
post-thumbnail

블로킹(Blocking)/ 논블로킹(Non-Blocking)

블로킹

  • 제어권을 넘김.
  • 호출된 함수가 제어권을 가짐, 작업 완료후 반환.
  • 그동안 호출한 함수는 제어권을 상실하고 일시정지.

논블로킹

  • 제어권을 넘기지 않음.
  • 호출한 함수가 제어권을 가짐.
  • 호출된 함수는 제어권 없이 작업.

동기(Synchronous) /비동기(Asynchronous)

동기

  • 호출한 함수가 작업 완료 확인
  • 일 시켜놓고 끝났는지 자꾸 힐끔거리고 신경쓰는 타입.

비동기

  • 호출된 함수가 작업 완료후 callback 함수를 실행하면서 작업 완료를 알림.
  • callback 함수는 함수 호출시에 함께 전달.
  • callback 함수가 있으니 일 시켜놓고 중간중간 신경쓰지 않음.
  • 비동기를 많이 쓸 경우 callback 지옥에 빠질 수 있음.

조합

동기-블로킹 (Sync-Blocking)

  • Read/Write

동기-논블로킹 (Sync-NonBlocking)

  • Read/Write (Polling)

비동기-블로킹 (Async-Blocking)

  • I/O multiflexing (Select/poll)
  • 비효율적

비동기-논블로킹 (Async-NonBlocking)

  • Async I/O

참고자료

  1. velog.io/@nittre/블로킹-Vs.-논블로킹-동기-Vs.-비동기

  2. https://victory0602.tistory.com/32

profile
공부 및 아카이브용 계정

0개의 댓글