1

此代码运行两次,一次在主线程和工作线程上。

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 。

4

0 回答 0