오늘의 오전 학습 - node.js 의 event-loop

자바스크립트의 비동기 작업은 node.js에서도 동일하게 이벤트 루프를 통해 처리가 되는데, 이에 대한 포스팅을 요약하였습니다.


참고문헌


https://medium.com/zigbang/nodejs-event-loop%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0-16e9290f2b30


요약


Node.js의 구성


  • V8

    • 자바스크립트 엔진입니다. (heap memory 할당, call stack 실행)

    • js 코드를 기계어로 해석하여 OS에서 바로 실행할 수 있도록 합니다.
      (node.js 환경에서 자바스크립트로 file과 network의 I/O 를 처리할 수 있는 이유)

  • libuv

    • C언어로 작성된 비동기 I/O를 지원하는 라이브러리입니다.

    • 윈도우나 리눅스의 비동기 API가 지원하는 작업 -> 요청을 보낸 후 이벤트 큐에 저장

    • 지원하지 않는 작업 -> libuv 내 별도 thread pool 에서 처리 후 이벤트 큐에 저장


이벤트 루프는 Main Thread 에서 실행


  • libuv 가 별도의 thread pool 을 가지고 있다 하여 node.js가 2개의 스레드를 가지고 있다고 오해하지만, 이는 사실이 아닙니다.

  • 이벤트 루프는 main thread 에서 실행되며, 비동기 callback 수행될 수 있도록 도와줍니다.

  • 즉, callback 의 실행은 모두 하나의 call stack 에서 실행됩니다.
    (이 부분에 대한 코드 예시가 첨부한 포스팅에 있으니 확인하실 수 있습니다.)


6 페이즈를 가지는 이벤트 Queue


  • Timer

    • 이벤트 루프의 시작단계입니다

    • setInterval, setTimeout 등 시간과 관련된 callback 을 min-heap 기반으로 처리합니다. 처리 이후 queue 로 callback 을 이동시킵니다

  • Pending callbacks

    • 이전 루프에서 대기중인 callback 이 있는지 확인하고 있다면 실행합니다

  • Idle, Prepare

    • Poll 페이즈를 가기위한 준비단계입니다.

  • Poll

    • 대기중인 callback 들을 call stack 에 가장 많이 올립니다

    • queue 내 callback 함수들이 존재한다면, 페이즈 기간동안 queue 가 소진될 때 까지 모두 call stack으로 올려버립니다.

  • Check

    • setImmediate() 만을 위한 페이즈입니다. 이를 활용한 callback 이 있는지 확인합니다.

  • Close callbacks

    • close type의 callback 을 관리합니다. (예를 들어, socket.on('close', () => {})



NodeJS Event Loop파헤치기

Medium

NodeJS Event Loop파헤치기

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 12월 5일 오전 12:59

조회 77

댓글 0

    함께 읽은 게시물

    오픈AI는 아이브의 AI 기기 개발 스타트업인 io를 전액 주식 거래로 인수하기로 했다. io의 기업가치는 약 65억달러(약 8조9000억원)로 평가된다. 

    ... 더 보기

    오픈AI, 아이폰 디자이너 조니 아이브 스타트업 인수…AI 기기 개발 본격화

    블로터

    오픈AI, 아이폰 디자이너 조니 아이브 스타트업 인수…AI 기기 개발 본격화

    리더. 국어사전을 보면 조직이나 단체에서 전체를 이끌어가는 위치에 있는 사람이라고 기술되어 있다. 지식백과사전에는 어떤 조직이나 단체에서 목표의 달성이나 방향에 따라 이끌어 가는 중심적인 위치에 있는 사람, 구성원들에 대한 결정의 책임을 지고 또한 집단 외부와의 조정 기능의 역할도 하는 사람이라고 되어 있다.

    ... 더 보기

    [시사뉴스] 【박성태 칼럼】 리더가 독재를 하게 되는 두가지 이유

    www.sisa-news.com

    [시사뉴스] 【박성태 칼럼】 리더가 독재를 하게 되는 두가지 이유

    조회 205


    < 집착, 신념, 두려움 – 당신을 망치는 3가지 필터 >

    1. 당신에게는 세 가지 여과 장치가 있는데, 첫째는 당신의 집착, 둘째는 당신의 신념, 셋째는 당신의 두려움입니다.

    ... 더 보기

    MZ 퇴사 사유 1위, 당신도? 일자리 판도가 바뀐다!

    M

    ... 더 보기

    < '모든 것을 받아들이기'의 진짜 의미 >

    1. 아무것도 기대하지 않으면 현재를 살게 된다.

    ... 더 보기