노드에서는 멀티쓰레드 방식으로 작업할수 있다!
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 |