如何重置多线程任务? (JXcore)

时间:2014-03-24 17:40:30

标签: multithreading node.js jxcore

我有一个node.js应用程序,我已经进入JXcore多线程但尚无法弄清楚如何重置任务。在当前实现中,服务器创建子进程并逐个发送作业。

当作业超过X秒时,主进程会终止子进程并跳过正在运行的任务并将其记录下来。任何工作都不应超过X秒。

到目前为止,我已经轻松地将队列系统移动到JXcore中并且按预期工作但我还无法弄清楚,我怎么能杀死正在运行的任务。

1 个答案:

答案 0 :(得分:2)

看起来杀死正在运行的任务的能力是必需的功能,因为有人已经问过同样的问题,并且已在此处回答: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.");
});