728x90
싱글 스레드란? 스레드가 하나라는 것을 의미합니다.
⇒ 우리가 작성한 자바스크립트 코드가 동시에 실행될 수 없는 이유가 된다.
스레드를 이해하기 위한 프로세스와 스레드의 차이
- 프로세스: 운영체제에서 할당하는 작업 단위(노드나 웹 브라우저 같은 프로그램). 프로세스 간에는 메모리 등의 자원을 공유하지 않는다.
- 스레드: 프로세스 내에서 실행되는 흐름의 단위. 프로세스는 스레드를 여러 개 생성해 여러 작업을 동시에 처리할 수 있다. 스레드들은 부모 프로세스의 자원을 공유한다. 같은 주소의 메모리에 접근 가능하므로 데이터를 공유할 수 있습니다.
“노드는 싱글 스레드 입니다?!”
하지만 엄밀히 말하면 싱글 스레드로 동작하지는 않습니다. 노드를 실행하면 먼저 프로세스가 하나 생성됩니다. 그리고 그 프로세스에서도 스레드들을 생성하는데, 이때 내부적으로 스레드를 여러 개 생성합니다. 그중에서 여러분이 직접 제어할 수 있는 스레드는 하나뿐입니다. 그래서 흔히 노드가 싱글 스레드라고 여겨지는 것입니다.
노드가 싱글 스레드로 동작하지 않는 경우(스레드풀, 워크스레드)가 있습니다.
- 스레드풀: 노드가 특정 동작을 수행할 때 스스로 멀티 스레드를 사용합니다.
- 워커 스레드: 노드 12 버전에서 안정화된 기능으로 멀티 스레드를 사용할 수 있게 되었습니다. 직접 다수의 스레드를 다룰 수 있으며 CPU 작업(연산이 많은 작업)이 많은 경우 사용하면 됩니다.
멀티 스레딩과 멀티 프로세싱 비교
멀티 스레딩 멀티 프로세싱
동작 | 하나의 프로세스 안에서 여러 개의 스레드 사용 | 여러 개의 프로세스 사용 |
용도 | CPU 작업이 많을 때 | I/O 요청이 많을 때 |
프로그래밍 | ||
난이도 | 어려움 | 비교적 쉬움 |
[참조]
(도서) Node.js 교과서 개정 2판
728x90
'Develop > Javascript' 카테고리의 다른 글
[Node.js] 논블로킹 I/O (0) | 2022.12.22 |
---|---|
[Node.js] 이벤트 기반 (0) | 2022.12.20 |
[node.js] Chat with WebSocket (0) | 2022.07.26 |
자바스크립트 자료형 #2 객체와 배열 (0) | 2020.03.17 |
자바스크립트 자료형 #1 기본 자료형 (0) | 2020.03.17 |
댓글