Blocking/Non-blocking과 Sync/Async은 관점을 어떻게 두느냐에 따라 다르다
다른 주체가 작업할 때 자신의 제어권이 있는지 없는지로 구분함
A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료되기 전까지 제어권을 돌려주지 않는 것
자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 다시 시작하는 것을 말함
A 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 함
다른 주체의 작업에 관련없이 자신의 작업을 하는 것을 의미
순서의 결과에 관심이 있는지 없는지로 판단함
호출된 함수의 결과 및 종료를 호출한 함수와 함께 신경 쓰는 경우
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
글이 잘 정리되어 있네요. 감사합니다.