首页 > 解决方案 > NodeJS 线程语法思路

问题描述

我一直想提高我对 NodeJS 的了解,所以我想我会写一个 C++ 插件。根据我使用 Node 的经验,我发现现有的线程包使生命周期短的简单进程在单独的线程中运行变得非常复杂。

我不知道我是否遗漏了一些使其过于复杂的重要内容,但是我有一个应用程序,我想在服务器上裁剪几百张图像(一个相对较短的过程,但仍然足够长以阻止事件循环并导致问题传入请求)。为此,我使用了子进程包,但仍然必须创建一个包含裁剪代码的单独文件,并弄清楚如何序列化图像并将它们作为消息发送。

我想我会尝试实现一个包含线程对象的节点包,以允许使用类似 Promise 语法的 C#-ish 线程。

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();

我在这方面的经验是有限的,所以我发布这个是为了反馈这个想法的有用性,以及对更改的建议。

提前致谢。

标签: javascriptnode.jsmultithreadingnode.js-addon

解决方案


推荐阅读