Web/Node.js
-
이벤트 루프란?Web/Node.js 2019. 9. 28. 01:10
다음 코드의 답을 예상해보자. 답은 이러하다. 왜 이런 답이 나오는지 코드를 따라가며 하나씩 살펴보자. 처음 호출은 console.log('시작') 이다. 호출 스택 즉 콜 스택 부분에 들어가게 된다. 이렇게 쌓인 console.log는 실행되고 지워지며 다음 setTimeout 줄으로 넘어가게 된다. 역시 setTimeout도 스택에 담기고 실행되고 지워지며 다음 줄로 넘어가게 된다. 이때 run 함수는 어딜로 가는 것일까? run 함수는 이벤트 루프에 의하여 테스크 큐에 저장 된다. 이후 console.log('끝')이 콜 스택에 담기고 실행되고 지워진다. 이제 콜 스택이 비워져있으면 이벤트 루프에 의하여 테스트 큐에 제일 앞에 있는 run 이 3초후에 실행되며 run() 안에 있던 console.l..
-
노드의 장단점?Web/Node.js 2019. 7. 15. 23:24
노드는 이벤트 기반, 논블로킹 I/O 모델을 사용해 가볍고 효율적이다. 이벤트 기반이란? : 이벤트가 발생할 때 무엇을 할지 미리 등록한다. 논블로킹 I/O 기반이란?: 이전 작업이 완료될 때까지 멈추지 않고 다음 작업을 수행한다. 동기 , 블로킹 // 비동기, 논블로킹 노드는 싱글 스레드 기반. 주어진 작업을 혼자서 처리해야 한다.노드는 스레드를 늘리는 대신 프로세스 자체를 복사해 여러 작업을 동시에 처리하는 멀티 프로세싱 방식을 택함. 자바스크립트 언어 자체 가 싱글 스레드 특성을 띄고 있기 때문이다.( 사실 노드 프로세스도 내부적으로 스레드를 여러개 가지고 있으나 제어할 수 있는 스레드는 하나뿐이므로 흔히 싱글 스레드라 한다. ) 노드 서버는 I/O가 많은 작업에 유리하다. 그 이유는 노드는 ibu..