← 질문 목록
#196깊이 0
동기/비동기 및 블로킹/논블로킹의 차이는 무엇인가?
동기와 비동기는 호출한 함수의 완료 여부를 누가 확인하느냐의 차이이고, 블로킹과 논블로킹은 호출된 함수가 제어권을 언제 돌려주느냐의 차이다.
| 기준 | 동기/비동기 | 블로킹/논블로킹 |
|---|---|---|
| 핵심 관점 | 작업 완료 여부 및 순서 | 제어권의 반환 시점 |
| 주체 | 호출한 쪽에서 확인 | 호출된 쪽에서 반환 |
논블로킹은 제어권을 바로 돌려준다. 끝났는지는 직접 물어볼 수도 있고 다 됐다는 알림을 받을 수도 있다. 이를 폴링(Polling)이라고 하며, 비동기 방식의 구현체로 많이 쓰인다.
반면 블로킹 방식은 작업이 끝날 때까지 제어권을 가지지 못해 아무것도 하지 못하고 대기한다. 이는 코드가 직관적이지만, 시스템 자원 효율이 떨어진다.
비동기 논블로킹 모델은 호출 즉시 제어권을 돌려받고, 콜백(Callback)이나 이벤트 루프로 작업 완료를 알림받아 효율을 극대화한다.
추천 꼬리질문
관련 질문
- 비동기로 옮겼는데도 왜 응답 없음이 생기는가?모바일비동기 처리의 근본적인 개념인 동기/비동기 및 블로킹/논블로킹의 차이를 알아야 비동기 전환 후의 응답 없음 현상을 분석할 수 있다.
- 블로킹과 논블로킹 I/O의 결정적 차이는 무엇인가?운영체제동기/비동기 및 블로킹/논블로킹 개념은 I/O 모델의 동작 방식과 직접적으로 연결되어 있다.
- 인터럽트와 폴링의 결정적인 차이는 무엇인가?운영체제인터럽트와 폴링은 각각 비동기적 알림과 동기적 확인이라는 실행 제어 방식의 차이를 보여주는 사례이다.
- 뮤텍스와 세마포어는 무엇으로 구분하는가?운영체제
- DNS 질의 시 재귀적 질의와 반복적 질의의 차이는 무엇인가?네트워크