[javascript] 자바스크립트에서 멀티 스레딩을 사용하는 다른 방법

자바스크립트는 기본적으로 싱글 스레드 언어이기 때문에 다중 스레딩을 사용하는 것이 복잡합니다. 하지만, 최근에 웹 브라우저와 Node.js에서 웹 워커와 클러스터와 같은 다른 방법들을 사용하여 멀티 스레드를 구현하는 방법들이 도입되었습니다.

1. 웹 워커 (Web Workers)

웹 워커는 브라우저 환경에서 멀티 스레딩을 구현하기 위한 기술입니다. 웹 워커를 사용하면 웹 앱에서 백그라운드 스레드를 생성하여 병렬로 작업을 수행할 수 있습니다.

// 웹 워커 생성
const worker = new Worker('worker.js');

// 메인 스레드에서 워커로 메시지 전송
worker.postMessage('Hello from main thread!');

// 워커에서 메시지 수신
worker.onmessage = function(event) {
  console.log('Message from worker:', event.data);
};

2. 클러스터 (Cluster)

Node.js에서는 클러스터 모듈을 사용하여 멀티 프로세싱을 구현할 수 있습니다. 클러스터를 사용하면 단일 Node.js 프로세스가 여러 자식 프로세스를 생성하여 병렬로 작업을 처리할 수 있습니다.

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  // 마스터 프로세스
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
} else {
  // 워커 프로세스
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('Hello from worker!');
  }).listen(8000);
}

다중 스레딩을 사용하는 것은 코드를 복잡하게 만들 수 있으므로, 실제로 필요한 경우에만 사용하는 것이 좋습니다.

참고 자료