Page 115 - Nodejs 교과서 개정2판
P. 115
Worker, isMainThread, parentPort,
} = require('worker_threads');
if (isMainThread) { // 부모일 때
const
worker = new Worker(__filename);
worker.on('message', message => console.log('from worker', message));
worker.on('exit', () => console.log('worker exit'));
worker.postMessage('ping');
} else { // 워커일 때
parentPort.on('message', (value) => {
console.log('from parent', value);
parentPort.postMessage('pong');
parentPort.close();
});
}
isMainThreadܳ ా೧ അ ٘о ݫੋ झۨ٘ ӝઓী زೞ؍ यӖ झۨ٘ܳ ݫੋ झۨ٘ ژח ࠗݽ झۨ٘ۄ
Ҋ ࠗܵפ ীࢲ प೯غח ইפݶ ܻо ࢤࢿೠ ਕழ झۨ٘ীࢲ प೯غח ҳ࠙ؾפ ݫੋ झۨ٘ীࢲ
ח new Workerܳ ా೧ അ ੌ __filename ਸ ਕழ झۨ٘ীࢲ प೯दఃҊ णפ ޛۿ അ ੌ FMTF
ࠗ࠙݅ ਕழ झۨ٘ীࢲ प೯ؾפ
ࠗݽীࢲח ਕழ ࢤࢿ റ worker.postMessage۽ ਕழী ؘఠܳ ࠁյ ࣻ णפ ਕழח parentPort.on 'm
essage') ߮ ܻझց۽ ࠗݽ۽ࠗఠ ݫदܳ ߉Ҋ parentPort.postMessage۽ ࠗݽীѱ ݫदܳ ࠁշפ
ࠗݽח worker.on('message' ۽ ݫदܳ ߉णפ ଵҊ۽ ݫदܳ ೠ ߣ݅ ߉Ҋ रݶ once('message
')ܳ ࢎਊೞݶ ؾפ
ਕழীࢲ on ݫࢲ٘ܳ ࢎਊೡ ٸח ਕழܳ ઙܐ೧ঠ ೠח ী ೞࣁਃ parentPort.close()ܳ ೞݶ
ࠗݽ৬ োѾ ઙܐؾפ ઙܐؼ ٸח worker.on('exit') प೯ؾפ
पઁ۽ प೯೧ࠁݶ җ эणפ
콘솔
$ node worker_threads
from parent ping
from worker pong
worker exit
ইөח ਕழ झۨ٘ܳ ࢎਊ೧ ࠂೠ স ೞ ঋওणפ ߣীח ৈ۞ ѐ ਕழ झۨ٘ী ؘఠܳ
ֈѹࠇद postMessage۽ ؘఠܳ ࠁղח ߑߨҗח ܲ ߑߨੑפ