【发布时间】:2014-05-12 21:40:54
【问题描述】:
我正在尝试在我的服务器上对 cpu 密集型作业进行多线程处理。我正在使用网络工作者线程。
Server.js:(相关部分)
var Worker = require('webworker-threads').Worker;
function doWork(req, res)
{
console.log("connection received");
var fibo = new Worker('plainworker.js');
fibo.onmessage = function (event) {
res.json('fib(10) = ' + event.data);
};
fibo.postMessage(10);
}
plainworker.js:
var _ = require('underscore'); ///////////// <---- PROBLEM LINE
function fibo (n) {
return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1;
}
onmessage = function (event) {
postMessage(fibo(event.data));
}
所以我注意到,如果我在我的 plainworker.js 文件中加载了一个模块,那么它就会崩溃并停止。如果我删除此行,那么一切正常。问题是,我想在我的工作人员中使用下划线...
有没有人有使用threads-a-gogo 或webworker-threads 的经验并且可以告诉我他们是否在工作线程中成功加载了外部模块?
【问题讨论】:
-
您遇到的错误是什么?
-
没有错误,如果我包含这行 var _ = require('underscore'); 只会导致服务器挂起;
-
您可以将它加载到服务器中,然后将其作为参数传递给需要它的plainworker 方法吗?有什么要求吗?或者只是
require('underscore')? -
Nope 传入也不起作用。任何要求都不起作用。
标签: javascript node.js concurrency