2014-03-24 29 views
1

我有一個node.js應用程序,我已經移入JXcore多線程,但無法弄清楚如何重置任務。在當前實現中,服務器創建一個子進程並逐個發送作業。如何重置多線程任務? (JXcore)

當作業佔用X秒以上時,主進程殺死子進程並跳過正在運行的任務並記錄它。任何工作不應超過X秒。

到目前爲止,我已經將隊列系統輕鬆地移入了JXcore,並且能夠按預期工作,但我還是無法弄清楚,我該如何殺死正在運行的任務。

回答

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."); 
});