此代码运行两次,一次在主线程和工作线程上。
const {isMainThread, Worker, parentPort} = require('worker_threads')
console.log(`isMainThread: ${isMainThread}`);
if(isMainThread) {
console.log('from main thread');
const worker = new Worker(__filename);
worker.on('message', (message)=>{
console.log(`message for Worker: ${message}`);
});
worker.on('error', (e)=>{
console.log('error');
});
worker.on('exit', (code) => {
console.log(code);
});
} else {
// case 1:
console.log('from worker thread');
process.exit();
// case 2:
console.log('from worker thread');
parentPort.postMessage('hi worker!');
}
输出案例 1:
isMainThread: true
from main thread
isMainThread: false
0
为什么console.log,不从else执行?
输出案例 2:
isMainThread: true
from main thread
isMainThread: false
message for Worker: hi worker!
from worker thread
0
工人“消息”侦听器在大多数情况下如何首先执行日志?尽管每次登录后都会调用 postMessage 。