lunchScreen / Interview_Questions

기술면접을 준비하는 버디들
73 stars 10 forks source link

동기와 비동기, 블로킹과 넌블로킹의 차이는 무엇인가요? #157

Open sustainable-git opened 2 years ago

tmfrlrkvlek commented 2 years ago

Blocking vs Non-blocking

Blocking과 Non-blocking은 호출된 함수가 호출한 함수에게 제어권을 바로 주느냐 아니냐의 차이입니다.

Blocking은 A 함수가 B 함수를 호출할 때, B함수가 자신의 작업이 종료되기 전까지 A함수에게 제어권을 돌려주지 않는 것을 의미합니다.

Non-blocking은 B 함수가 제어권을 바로 A에게 넘겨주면서 A 함수가 다른 일을 할 수 있도록 하는 것을 의미합니다.

Sync vs Async

Sync와 Async는 호출된 함수의 종료를 호출한 함수가 처리하느냐, 호출된 함수가 처리하느냐의 차이입니다.

Sync는 A 함수가 B 함수를 호출할 때, B 함수의 결과를 A 함수가 처리하는 것을 의미합니다.

Async는 B 함수의 결과를 콜백으로 B 함수가 직접 처리하는 것을 의미합니다.

참고)

iOS

iOS 프로그래밍에서는 aysnc는 non-blocking으로만 다루고, sync는 blocking으로만 다루고 있습니다.

참고) 인프런 async와 blocking

inuinseoul commented 2 years ago

blocking은 제어권의 여부에 따라 분류됩니다. blocking은 제어권을 뺏어 일시적으로 작업이 멈추도록하고, non-blocking은 그렇지 않습니다. sync는 작업의 처리 위치에 따라 분류됩니다. 직접 처리할 경우 sync이며 다른 곳에서 처리할 경우 async입니다.