[네트워크] Blocking/Non-Blocking & Sync/Async

함민혁·2023년 7월 18일
0

cs면접준비

목록 보기
12/43

Blocking/Non-blocking과 Sync/Async은 관점을 어떻게 두느냐에 따라 다르다

Blocking / Non-Blocking

다른 주체가 작업할 때 자신의 제어권이 있는지 없는지로 구분함

Blocking

A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료되기 전까지 제어권을 돌려주지 않는 것
자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 다시 시작하는 것을 말함

Non-Blocking

A 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 함
다른 주체의 작업에 관련없이 자신의 작업을 하는 것을 의미

Sync / Async

순서의 결과에 관심이 있는지 없는지로 판단함

Sync

호출된 함수의 결과 및 종료를 호출한 함수와 함께 신경 쓰는 경우

Async

A 함수가 B 함수를 호출 할 때, B 함수의 결과를 B 함수가 처리하는 것. (callback)
시작과 종료가 일치하지 않고 끝나는 동시에 시작을 하지 않음을 의미
호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 쓰고 처리하는 경우

우리가 흔히 접하는 것은 Sync + Blocking, Async + Non-Blocking

각각의 4가지 상황에 대한 예시는 해당 출처들에 자세히 나와있음

출처: https://velog.io/@maketheworldwise/SyncAsync-BlockingNon-Blocking-무슨-차이일까
https://gyoogle.dev/blog/computer-science/network/Blocking,Non-blocking%20&%20Synchronous,Asynchronous.html
https://musma.github.io/2019/04/17/blocking-and-synchronous.html

profile
Born to be FE developer 🧑🏻‍💻

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

글이 잘 정리되어 있네요. 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

정말 잘 읽었습니다, 고맙습니다!

답글 달기