[typescript] 타입스크립트로 작성하는 Node.js 멀티스레드 프로그래밍 예시

Node.js는 주로 싱글 스레드 이벤트 루프를 기반으로 하지만, 멀티스레드 기능도 활용할 수 있습니다. 이번에는 타입스크립트로 Node.js에서 멀티스레드를 활용하는 방법을 살펴보겠습니다.

Worker Threads 모듈 이용하기

Node.js의 Worker Threads 모듈은 지정된 스레드 풀에서 JavaScript를 실행할 수 있도록 해줍니다. 이 모듈을 사용하면 CPU 집약형 작업을 병렬로 처리할 수 있습니다.

import { Worker, isMainThread, parentPort } from 'worker_threads';

if (isMainThread) {
  const worker = new Worker(__filename);
  worker.on('message', (message) => {
    console.log('Received message from worker:', message);
  });
  worker.postMessage('Hello, worker!');
} else {
  parentPort.on('message', (message) => {
    console.log('Received message from main thread:', message);
    parentPort.postMessage('Hello, main thread!');
  });
}

위의 예시 코드는 isMainThread를 사용하여 현재 스레드가 메인 스레드인지 여부를 확인하고, 그에 따라 작업을 분기합니다. 메인 스레드에서는 Worker를 생성하고, 부모 포트를 이용하여 메시지를 주고 받습니다. 작업 스레드에서는 부모 포트를 통해 메인 스레드로부터 메시지를 받고, 응답을 보냅니다.

마무리

타입스크립트로 Node.js의 멀티스레드를 활용하려면 Worker Threads 모듈을 사용하여 작업을 분산시키는 것이 중요합니다. 이를 통해 병렬 처리를 통해 성능을 향상시킬 수 있습니다.

멀티스레드 프로그래밍은 복잡성을 동반하기 때문에 주의 깊게 작성해야 합니다. 그러나 적절히 활용하면 효율적인 프로그램을 작성할 수 있습니다.

더 많은 정보를 원하신다면 Node.js 공식 문서를 참고해 보시기 바랍니다.