【问题标题】:How to reset a multithreaded task? (JXcore)如何重置多线程任务? (JXcore)
【发布时间】:2014-05-02 05:45:22
【问题描述】:

我有一个 node.js 应用程序,我已将其移至 JXcore 多线程,但不知道如何重置任务。在当前的实现中,服务器创建一个子进程并一个一个地发送作业。

当一个作业耗时超过 X 秒时,主进程会杀死子进程并跳过正在运行的任务并记录它。任何作业都不应超过 X 秒。

到目前为止,我已经轻松地将队列系统移到了 JXcore 中,并且它按预期工作,但我还不知道如何终止正在运行的任务。

【问题讨论】:

    标签: multithreading node.js jxcore


    【解决方案1】:

    看起来杀死正在运行的任务的能力是一个必要的功能,因为有人已经问过同样的问题并且已经在这里得到了回答:Thread lifetime management

    即将发布的 JXcore 版本将具有 jxcore.tasks.killThread()。逻辑是这样的:一个任务会通知主线程,它刚刚启动,然后主线程可以开始计算杀死线程的超时时间,例如:

    // main thread receives the message from a task
    jxcore.tasks.on("message", function(threadId, obj){
        if(obj.started){
            //kill the task after a second
            setTimeout(function(){
                jxcore.tasks.killThread(threadId);
                console.log("thread killed", threadId);
            },1000);
        }
    });
    
    // adding a task
    jxcore.tasks.addTask( function() {
        // informing the main thread, that task is just started
        process.sendToMain({started:true});
    
        // looping forever
        while(true){};
        console.log("this line will never happen.");
    }); 
    

    【讨论】:

      猜你喜欢
      • 2015-07-03
      • 2015-12-19
      • 2023-03-15
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多