Multithreading 如何重置多线程任务?(JXcore)
我有一个node.js应用程序,我已经将它迁移到JXcore多线程中,但却不知道如何重置任务。在当前实现中,服务器创建一个子进程并逐个发送作业 当一个作业花费的时间超过X秒时,主进程将终止子进程,跳过正在运行的任务并记录它。任何作业都不应超过X秒Multithreading 如何重置多线程任务?(JXcore),multithreading,node.js,jxcore,Multithreading,Node.js,Jxcore,我有一个node.js应用程序,我已经将它迁移到JXcore多线程中,但却不知道如何重置任务。在当前实现中,服务器创建一个子进程并逐个发送作业 当一个作业花费的时间超过X秒时,主进程将终止子进程,跳过正在运行的任务并记录它。任何作业都不应超过X秒 到目前为止,我已经很容易地将队列系统移动到JXcore中,它可以按预期工作,但我还不知道如何终止正在运行的任务。看来终止正在运行的任务的功能是一项必需的功能,因为有人已经提出了相同的问题,并且在这里得到了回答: 即将发布的JXcore版本将包含JXco
到目前为止,我已经很容易地将队列系统移动到JXcore中,它可以按预期工作,但我还不知道如何终止正在运行的任务。看来终止正在运行的任务的功能是一项必需的功能,因为有人已经提出了相同的问题,并且在这里得到了回答: 即将发布的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.");
});