본문 바로가기
Develop/Javascript

[Node.js] 싱글스레드

by bellsilver7 2022. 12. 23.
728x90

싱글 스레드란? 스레드가 하나라는 것을 의미합니다.

⇒ 우리가 작성한 자바스크립트 코드가 동시에 실행될 수 없는 이유가 된다.

 

스레드를 이해하기 위한 프로세스와 스레드의 차이

  • 프로세스: 운영체제에서 할당하는 작업 단위(노드나 웹 브라우저 같은 프로그램). 프로세스 간에는 메모리 등의 자원을 공유하지 않는다.
  • 스레드: 프로세스 내에서 실행되는 흐름의 단위. 프로세스는 스레드를 여러 개 생성해 여러 작업을 동시에 처리할 수 있다. 스레드들은 부모 프로세스의 자원을 공유한다. 같은 주소의 메모리에 접근 가능하므로 데이터를 공유할 수 있습니다.

 

“노드는 싱글 스레드 입니다?!”

하지만 엄밀히 말하면 싱글 스레드로 동작하지는 않습니다. 노드를 실행하면 먼저 프로세스가 하나 생성됩니다. 그리고 그 프로세스에서도 스레드들을 생성하는데, 이때 내부적으로 스레드를 여러 개 생성합니다. 그중에서 여러분이 직접 제어할 수 있는 스레드는 하나뿐입니다. 그래서 흔히 노드가 싱글 스레드라고 여겨지는 것입니다.

노드가 싱글 스레드로 동작하지 않는 경우(스레드풀, 워크스레드)가 있습니다.

  • 스레드풀: 노드가 특정 동작을 수행할 때 스스로 멀티 스레드를 사용합니다.
  • 워커 스레드: 노드 12 버전에서 안정화된 기능으로 멀티 스레드를 사용할 수 있게 되었습니다. 직접 다수의 스레드를 다룰 수 있으며 CPU 작업(연산이 많은 작업)이 많은 경우 사용하면 됩니다.

 

멀티 스레딩과 멀티 프로세싱 비교

멀티 스레딩 멀티 프로세싱

동작 하나의 프로세스 안에서 여러 개의 스레드 사용 여러 개의 프로세스 사용
용도 CPU 작업이 많을 때 I/O 요청이 많을 때
프로그래밍    
난이도 어려움 비교적 쉬움

 

 

[참조]

(도서) Node.js 교과서 개정 2판

728x90

댓글