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