본문 바로가기
CS/운영체제

Sync / Async, Block / Non-block 차이점

by 쌩욱 2022. 1. 18.

Sync, Async와 Block, Non-block이 얼핏 보면 비슷해보여 계속 헷갈려서 정리한다..

 

✔ Sync / Async

- 호출된 함수의 완료 여부를 누가 신경쓰는가

Synchronous

  • 호출된 함수의 수행 결과 및 종료를 호출한 함수가 신경씀
  • 호출한 함수가 호출된 함수의 작업이 끝나서 결과값을 반화하기를 기다리거나, 지속적으로 호출된 함수에게 확인 요청

Asynchronous

  • 호출하는 함수가 호출된 함수의 완료 여부를 신경쓰지 않음
  • 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경 쓰고 처리함(callback) 

 

✔ Block / Non-block 

-  호출된 함수가 바로 제어권을 넘기는가

Block

  • 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 돌려주지 않음

Non-block

  • 호출된 함수가 자신이 할 일을 채 마치지 않았더라도 바로 제어권을 건네주어(return) 호출한 함수가 다른 일을 진행할 수 있도록 해줌

1. Sync - Block

  • Sync : 호출한 함수가 호출된 함수의 결과를 기다리며 신경씀
  • Blocking : 호출된 함수가 제어권을 넘겨주지 않음

 

2. Sync - Nonblock

Non-block : 호출된 함수가 바로 제어권을 반환해서 호출한 함수는 다른 작업을 할 수 있음

Sync : 호출한 함수는 호출되는 함수 쪽에 작업 완료 여부를 계속 확인함

 

3. Async - Block

Async : 호출된 함수의 완료 여부가 관심 없음

Block : 그러나 호출된 함수가 제어권을 넘겨주지 않아 대기하는 비효율적인 상황 발생

 

 

4. Async - Nonblock

Async : 호출된 함수의 작업 완료 여부를 Callback으로 받음

Non-block : 호출된 함수는 작업 완료 여부와 상관없이 제어권을 바로 반환

 


https://musma.github.io/2019/04/17/blocking-and-synchronous.html

 

동기와 비동기, 그리고 블럭과 넌블럭

무릇 모든 개발자들, 아니 비단 개발자가 아니라 할지라도 컴퓨터 관련 산업계 종사자들이라면 오다 가다 한 번씩은 꼭 들어보고, 또 익혔음직한 내용이겠습니다. 이름하야, 동기(Synchronous)와 비

musma.github.io

 

예시를 통해 이해하기 쉽게 정리하신 글

'CS > 운영체제' 카테고리의 다른 글

Thread-Safe란 무엇일까?  (0) 2022.01.17
동기화 문제의 해결책 (Mutex, Semaphore)  (0) 2021.12.13
Process/Thread 정리, 차이점  (0) 2021.12.04