Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

melius

[Node.js] Worker Threads 본문

Node.js

[Node.js] Worker Threads

melius102 2020. 2. 4. 23:06

https://nodejs.org/api/worker_threads.html

 

worker_threads 모듈은 병렬로 JavaScript를 실행하는 thread를 생성한다.

브라우저에서는 Web API인 Worker 객체를 사용한다.

 

 

Worker 생성

Main thread에서 Worker 생성자 함수의 인수로 Worker thread에서 실행할 Script가 담긴 파일경로를 인자로 전달하면 worker 객체(instance)가 생성된다. Script가 Main thread에서 실행되는지 여부는 isMainThread 속성으로 확인할 수 있다.

// main.js
const { Worker, isMainThread } = require('worker_threads');

const worker = new Worker('worker.js');
console.log('isMainThread:', isMainThread); // true

 

 

Message 전송

thread간 통신은 Message를 통해서 이루어 진다. Message 전송시에는 postMessage() 메소드를 이용하고, Message 수신시에는 'message' 이벤트 핸들러로 데이터 처리가 가능하다.

// main.js
setTimeout(() => {
    worker.postMessage('message from mainThread');
}, 2000);

worker.on('message', (msg) => {
    console.log(msg);
});

Worker thread에서는 parentPort 객체를 통해서 Main thread로 접근이 가능하다. 실행되는 Script는 아래와 같이 작성할 수 있다.

// worker.js
const {
    Worker,
    isMainThread,
    parentPort
} = require('worker_threads');

console.log('isMainThread:', isMainThread); // false

parentPort.on('message', (msg) => {
    console.log(msg);
    setTimeout(() => {
        parentPort.postMessage('message from worker');
    }, 2000);
});

 

 

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

[Node.js] Addons  (0) 2021.03.08
[Node.js] JavaScript Runtime Environment  (0) 2021.02.27
[Node.js] FormData 객체 전송  (0) 2020.01.29
[Node.js] HTTPS 로컬 서버 구축  (0) 2020.01.29
[Node.js] TCP/IP 통신  (0) 2020.01.16
Comments