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 |