代码之家  ›  专栏  ›  技术社区  ›  drew.neely

NodeJS线程语法思想

  •  1
  • drew.neely  · 技术社区  · 6 年前

    我一直想提高我对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();
    

    我在这方面的经验是有限的,所以我发表这篇文章是为了反馈这个想法的有用性,并提出修改建议。

    提前谢谢。

    0 回复  |  直到 5 年前