-
[면접 준비] sync vs async, blocking vs non-blocking, async vs non-blocking 차이 설명하기면접 준비 2024. 7. 31. 09:37
학습 키워드: sync, async, blocking, non-blocking2024-07-31 면접 카타 질문
동기와 비동기의 차이, 블락킹과 논블락킹의 차이, 비동기와 논블락킹에 차이에 대해 설명해주세요:
동기는 모든 작업이 순차적으로 실행되며, 한 작업이 종료될 때 까지 다른 작업을 실행하지 않는 것을 말합니다. 비동기는 앞선 작업의 종료를 기다리지 않고 다음 작업이 동시에 실행되는 방식입니다. Node.js에서 비동기 함수는 Libuv를 통해 커널의 비동기 함수로 처리되어 이벤트 루프에 콜백으로 등록됩니다. 블로킹과 논블로킹의 핵심 차이는 코드의 실행 제어권을 다른 함수에 넘겨주느냐 아니냐로 갈리는데, 이름에서 알 수 있듯이 블로킹은 제어권을 넘겨줘서 다른 함수가 실행되는 동안 실행을 멈추게 됩니다. 논블로킹은 반대로 실행 제어권을 넘기지 않고 다른 함수를 호출해도 계속해서 자기 코드를 실행합니다. 얼핏 비동기와 동일한 듯 보이지만, 비동기와 논블로킹은 다른 개념입니다. 비동기 함수는 함수 자체가 비동기로 처리되는 것이고, 비동기 함수를 호출하고 자신의 코드를 계속해서 실행해나가는 함수가 논블로킹 함수가 됩니다. 또한 비동기 함수를 호출하더라도 await 같은 키워드를 사용하면 비동기 작업이 완료될 때 까지 함수가 블로킹되는 구조로도 코드를 작성할 수 있습니다.
--
728x90'면접 준비' 카테고리의 다른 글
[면접 준비] DFS와 BFS의 차이 (0) 2024.08.02 [면접 준비] BigO 설명하기 (0) 2024.07.31 [면접 준비] Node.js의 Libuv 라이브러리 설명하기 (0) 2024.07.30 [면접 준비] Node.js: event loop란? (0) 2024.07.30 [면접 준비] Node.js: single-threaded, non-blocking, asynchronous 기반 JS 런타임 (0) 2024.07.29