Node.js

[NodeJS] worker_threads

min_s 2025. 1. 30. 04:24

노드에서는 멀티쓰레드 방식으로 작업할수 있다!

isMainThread : 현재 코드가 메인 스레드에서 실행되는지, 워커 스레드에서 실행되는지 구분

메인 스레드에서는 new Worker를 통해 현재 파일(_filename)을 워커 스레드에서 실행시킨다.

worker.postMessage로 부모에서 워커로 데이터를 보낸다.

parentPort.on('message')로 부모로부터 데이터를 받고, postMessage로 데이터를 보낸다.

const { Worker, isMainThread, parentPort } = require('worker_threads');

if (isMainThread) { // 메인 스레드
	const worker = new Worker(__filename);
    worker.on('message', (value) => console.log('워커로부터', value));
    worker.on('exit, () => console.log('워커 끝'));
    worker.postMessage('ping'); 
} else { // 워커 스레드
	parentPort.on('message', (value) => {
    	console.log('부모로부터', value); 
        parentPort.postMessage('pong')
        parentPort.close();
    })
}

 

이런식으로 워커를 여러개 만들어서 멀티 스레드를 사용할 수 있다.

'Node.js' 카테고리의 다른 글

[NodeJS] 라우터 분리하기  (0) 2025.02.17
[NodeJS] Express  (0) 2025.02.11
[NodeJS] HTTP 모듈로 서버 만들기(REST API)  (0) 2025.02.03
[NodeJS] 버퍼와 스트림  (0) 2025.02.01
[NodeJS] 파일 시스템 접근하기(동기,비동기)  (0) 2025.01.31