오늘의 오전 학습 - Node.js는 싱글스레드인가?

node.js 의 실행환경이 싱글스레드라는것을 의심없이 받아들이고 있었는데, 이를 의심해보는 좋은 포스팅이 있어 요약하고자 했습니다


참고문헌


https://helloinyong.tistory.com/350


요약


동시성과 병렬성


  • 동시성은 하나의 스레드에서 여러 작업을 CPU가 빠르게 전환시키면서 작업을 진행하여 좀 더 효율적으로 작업하는 방식 (React의 useTransition 도 같은 원리)
    허나 결국은 하나의 스레드 내에서의 작업

  • 병렬성은 여러개의 물리적인 스레드에서 작업을 진행


멀티스레드의 특징


  • 같은 프로세스 내 서로 다른 스레드들이 동시에 실행된다 (병렬성)

  • 각 스레드들은 프로세스가 할당받은 자원을 공유한다


멀티스레드의 특징과 비교해보는 node.js 의 worker_thread


  • node.js는 10버전 이후부터 worker_threads 를 지원

  • node.js 환경에서 별도의 스레드를 생성한 다음, 각 스레드 별 비동기 처리가 가능하도록 지원해주는 libuv 엔진이 세팅되며, 이후 각 스레드 내 javascript 환경으로 수행한다.

  • node.js 환경 아래 하나의 이벤트루프를 공유한다.

  • 하지만 각 스레드별 script 를 실행시키고, 이에 대한 message 만 주고받을 뿐, 자원을 공유하지는 않는다
    (어떠한 공유되는 변수를 여러 스레드에서 활용할 수 없다는 의미)


결론


  • node.js는 분명 worker_threads 모듈을 통해 스레드를 추가하여 병렬적으로 작업을 수행할 수 있다. 이는 멀티스레드의 방식과 유사하다

  • 다만, node.js의 기본적인 핵심 요소는 '하나의 이벤트루프 + 메인 스레드' 이며 이러한 핵심 요소가 여러개 생성되는 방식이 아니다.

  • 정리하자면 node.js는 싱글스레드 기반이지만, worker_threads 를 통해 멀티스레드 환경을 구성하는것도 가능하다..


Node.js가 왜 싱글 스레드로 불리는지 "정확한 이유"를 알고 계신가요?

이뇽의세상

Node.js가 왜 싱글 스레드로 불리는지 "정확한 이유"를 알고 계신가요?

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 11월 29일 오전 12:59

댓글 0

    함께 읽은 게시물

    균형을 유지해서 어느 한 상태가 다른 상태를 압도하지 않게 하려면 필요한 것이 있다. 바로 ‘룬샷’을 도모하는 예술가와 ‘프랜차이즈’를 도모하는 병사가 똑같이 사랑받는다고 느껴야 한다는 것. 나약하고 모호한 소리처럼 들릴 수도 있지만, 아주 현실적인 얘기이자 자주 간과되는 요소다.

    ... 더 보기

    흐름출판 | 편애하는 리더가 빠지는 함정 - 교보문고

    casting.kyobobook.co.kr

    흐름출판 | 편애하는 리더가 빠지는 함정 - 교보문고

    조회 448


    < '네이버 다녀요'라는 말에 아무도 무슨 일을 하는지는 묻지 않았다 >

    1

    ... 더 보기

    일찍 알았다면 좋았을 TailwindCSS 클래스 8가지

    T

    ... 더 보기

    8 TailwindCSS Classes I Wish I Found Earlier

    www.youtube.com

    8 TailwindCSS Classes I Wish I Found Earlier

     • 

    댓글 1 • 저장 101 • 조회 3,997