正在c#程式優化時,如果多執行緒效果不佳的情況下,也會使用多程序的方案,如下:
system.threading.tasks.task task=system.threading.tasks.task.factory.startnew((object mystate) =>
, collectpathitems.dequeue())
一般開闢的程序任務數也是要有限制的開,比如開闢程序數與計算機核心數一樣enviroment.processcount。那麼問題來了
假設用a:已經開闢了3個autocollectmrmultipleprocess.exe,使用者b去進行自己的採集任務時,允許開闢的程序數為:enviroment.processcount-3(如果該值已經小於等於0,就不再開闢,進入等待)。
實現**:
int maxprocesscount =enviroment.processcount;list
taskitems = new list();
int cursor = 0
;
while (!(collectpathitems.count == 0 && taskitems.count == 0
))
}//如果collectpathitems.count == 0,則不會有新的任務被新增進來,因此不需要執行下邊其他**。
//而只需要等待上邊的任務完成跳出迴圈即可。
if (collectpathitems.count == 0
)
process processitems = process.getprocessesbyname("
autocollectmrmultipleprocess");
if (processitems.length >=maxprocesscount)
int dequeuecount = ((maxprocesscount - processitems.length) > collectpathitems.count) ? collectpathitems.count : (maxprocesscount -processitems.length);
for (int i = 0; i < dequeuecount; i++)
, collectpathitems.dequeue()));}
// sleep 30 seconds...
thread.sleep(3
0 * 1000
); cursor++;
}
多程序 多程序queue
多程序 import multiprocessing import threading import time defthread run print threading.get ident defrun name time.sleep 2 print hello name t threading....
unix linux多程序程式設計2 程序控制
主要內容 程序建立 執行程式 程序終止 程序屬性 1 程序識別符號 1.1 每個程序都有乙份非負整數表示的唯一程序id 程序id可以重新,乙個程序結束之後可以,這個id可以被其他程序所使用,當unix普遍都採用了延遲重用演算法。使得某乙個程序結束之後其id不會馬上被新的程序所使用,以防止將新程序誤認...
unix linux多程序程式設計3 程序控制
1 程序組 1.1與同意作業關聯的乙個或者多個程序的集合稱為程序組,可以接收來自同一終端的各種訊號。可以用getpgrp 來或者程序的程序組id。1.2組長程序 每個程序組都有乙個組長程序,其標誌是程序id等於程序組id,組長程序可以建立乙個程序組,建立該組中的程序,然後終止。但組長程序終止,並不意...