Note ≣ ⎮ 동기와 비동기, 블로킹과 논블로킹
동기와 비동기, 블로킹과 논블로킹이라는 네 개의 용어가 노드에서 혼용되고 있는데, 용어가 서로 다른 만큼 의미상의 차이가 있습니다.
• 동기와 비동기: 백그라운드 작업 완료 확인 여부
• 블로킹과 논블로킹: 함수가 바로 return되는지 여부
노드에서는 동기-블로킹 방식과 비동기-논블로킹 방식이 대부분입니다. 동기-논블로킹이나 비동기-블로킹은 없다고 봐도 됩니다.
동기-블로킹 방식에서는 백그라운드 작업 완료 여부를 계속 확인하며, 호출한 함수가 바로 return되지 않고 백그라운드 작업이 끝나야 return합니다. 비동기-논블로킹 방식에서는 호출한 함수가 바로 return되어 다음 작업으로 넘어가고, 백그라운드 작업 완료 여부는 신경 쓰지 않고 나중에 백그라운드가 알림을 줄 때 비로소 처리합니다.
▲ 그림 3-11 동기-블로킹 vs. 비동기-논블로킹