-
블로킹과 논블로킹 그리고 스레드의 관계(1)TodayILearned/node.js 2020. 10. 28. 00:45
/Nonblocking
논블로킹이란, 이전 작업이 완료 될 때 까지 멈추지않고 다음 작업을 수행함을 의미
블로킹이란, 이전 작업이 멈추지 않으면 다음 작업을 수행하지 않음을 의미
Blocking방식의 코드
function longRunningTask(){ //오래걸리는 작업 console.log('작업끝'); } console.log('시작'); longRunningTask(); console.log('다음작업');
실행내역 >
오래걸리는 작업이 끝나지 않으면 다음작업은 호출되지않는다.
NonBlocking방식의 코드
function lonRunningTask(){ //오래걸리는 작업 console.log('작업끝'); } console.log('시작') setTimeout(longRunningTask,0); console.log('다른작업')
실행내역>
오래 걸리는 작업은 이벤트루프로 인해 테스크큐로 빠지게되고, 다른작업이 먼저 호출 된 후 작업이 실행된다.
Thread
single thread / multi thread
스레드는 process 내에서 프로그램에서 할당받은 자원을 실행하는 단위이다.
single thread는 주어진 작업을 혼자서 처리한다.
multi thread는 주어진 작업을 나누어 처리한다.
Thread 1: Task A --> Task B Thread 2: Task C --> Task D
multi thread 내에서 Thread1과2가 ABCD를 나누어 처리한다.
그러나, node.js에서 항상 multi thread가 우세한 것은 아니다.
'TodayILearned > node.js' 카테고리의 다른 글
블로킹과 논블로킹 그리고 스레드의 관계(2) (0) 2020.10.30 async, await 의 개념(1) (0) 2020.10.11 var,let,const 의 특징 (0) 2020.10.10