我一直想提高对NodeJS的了解,所以我想写一个C ++插件。根据对Node的经验,我发现现有的线程包使寿命短的简单进程在单独的线程中运行变得非常复杂。
我不知道是否丢失了使它复杂化的重要内容,但是我有一个应用程序,希望在服务器上裁剪几百个图像(过程相对较短,但仍然足够长以阻止事件循环和导致传入请求出现问题)。为此,我使用了子处理程序包,但仍然必须创建一个包含裁剪代码的单独文件,并弄清楚如何序列化图像并将其作为消息发送。
我认为我将尝试实现一个包含线程对象的节点程序包,以允许使用类似诺言的语法进行C#线程化。
function doWork(arg) {
// something that takes awhile
}
function TenSecondProcess(arg1, arg2) {
return new Thread(() => {
return doWork(arg1) + doWork(arg2);
}
}
function main() {
var a = 25;
var b = 21;
TenSecondProcess(a, b).then((result) => {
console.log(result);
}.catch((err) => {
console.error(err);
}
}
我还考虑在对象上实现一个函数,该函数将阻塞,直到为嵌套线程或不使用回调/承诺范式的javascript代码计算值为止。
var thread = TenSecondProcess(a, b);
// other work
var result = thread.result();
我在这方面的经验有限,因此我将其发布以征询有关此想法的有用性以及更改建议。
谢谢。