я написал пример кода для Worker_Thread в nodejs мой код Worker:
const {
Worker, isMainThread, parentPort
} = require('worker_threads');
if (isMainThread) {
module.exports.func=()=>{
return new Promise((resolve, reject) => {
let worker = new Worker(__filename);
worker.on('message', resolve);
worker.on('error', reject);
worker.on('exit', (code) => {
if (code !== 0)
reject(new Error(`Worker stopped with exit code ${code}`));
});
});
}
} else {
const s = new Date().getSeconds();
while (true) {
if (new Date().getSeconds() - s >= 5) {
console.log("its Done after 5 sec")
parentPort.postMessage('its Done')
break;
}
}
}
, поэтому при запуске в другом файле его штрафная порожденная рабочая станция для каждого вызова, например:
const {func} = require('./workerFile');
func().then()
func().then()
выполнить два раза и в одно и то же время !!!
, но когда я использовал Expressjs, он не будет работать:
app.get('/', (req,res)=>{
func().then(()=>{
res.send('Result')
}).catch((e)=>{
res.send('err')
})
})
это всего лишь один рабочий-супруг для маршрута '/' и ожидания до завершения и может запросить маршрут снова {другой маршрут не заблокирован}
так как я могу это исправить? Я хочу, чтобы spawn worker для каждого запроса '/'
tnx для чтения <3 </p>