如何从nodejs中的工作线程修改全局变量
How to modify global variable from worker thread in nodejs
最近遇到worker thread是nodejs实现的一个新特性,但是好像没有办法从worker thread访问和修改,请问有什么办法吗?
const { Worker, isMainThread, parentPort } = require('worker_threads');
global.myvar = "initial variable"
if (isMainThread) {
const worker = new Worker(__filename);
// Receive messages from the worker thread
worker.once('message', (message) => {
console.log(message + ' received from the worker thread!');
});
// Send a ping message to the spawned worker thread
worker.postMessage("");
setTimeout(function() {
console.log("final variable : " + global.myvar);
}, 2000);
} else {
// When a ping message received, send a pong message back.
console.log("inside worker thread");
parentPort.on('message', (message) => {
global.myvar = "worker variable"
});
}
在这段代码中,我希望最终的变量是值 "worker variable"
,但它显示 "initial variable"
,请问我该如何解决这个问题?
工作线程和主线程在完全独立的JavaScript环境中运行。他们每个人都有自己的一套全局变量等
工人不能直接修改父变量的内容。它需要通过消息向父级发送更新,父级将通过更新全局变量来处理。
最近遇到worker thread是nodejs实现的一个新特性,但是好像没有办法从worker thread访问和修改,请问有什么办法吗?
const { Worker, isMainThread, parentPort } = require('worker_threads');
global.myvar = "initial variable"
if (isMainThread) {
const worker = new Worker(__filename);
// Receive messages from the worker thread
worker.once('message', (message) => {
console.log(message + ' received from the worker thread!');
});
// Send a ping message to the spawned worker thread
worker.postMessage("");
setTimeout(function() {
console.log("final variable : " + global.myvar);
}, 2000);
} else {
// When a ping message received, send a pong message back.
console.log("inside worker thread");
parentPort.on('message', (message) => {
global.myvar = "worker variable"
});
}
在这段代码中,我希望最终的变量是值 "worker variable"
,但它显示 "initial variable"
,请问我该如何解决这个问题?
工作线程和主线程在完全独立的JavaScript环境中运行。他们每个人都有自己的一套全局变量等
工人不能直接修改父变量的内容。它需要通过消息向父级发送更新,父级将通过更新全局变量来处理。