1
我有一个node.js应用程序,我已经移入JXcore多线程,但无法弄清楚如何重置任务。在当前实现中,服务器创建一个子进程并逐个发送作业。如何重置多线程任务? (JXcore)
当作业占用X秒以上时,主进程杀死子进程并跳过正在运行的任务并记录它。任何工作不应超过X秒。
到目前为止,我已经将队列系统轻松地移入了JXcore,并且能够按预期工作,但我还是无法弄清楚,我该如何杀死正在运行的任务。
我有一个node.js应用程序,我已经移入JXcore多线程,但无法弄清楚如何重置任务。在当前实现中,服务器创建一个子进程并逐个发送作业。如何重置多线程任务? (JXcore)
当作业占用X秒以上时,主进程杀死子进程并跳过正在运行的任务并记录它。任何工作不应超过X秒。
到目前为止,我已经将队列系统轻松地移入了JXcore,并且能够按预期工作,但我还是无法弄清楚,我该如何杀死正在运行的任务。
貌似杀死正在运行的任务是需要的功能的能力,因为已经有人问同样的问题,它已经在这里找到答案: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.");
});