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();
})
}
이런식으로 워커를 여러개 만들어서 멀티 스레드를 사용할 수 있다.