我試圖通過讓一個線程寫入鏈接列表和另一個線程處理鏈接列表來加快速度。在.net中將線程優先級從低到高更改爲:
由於某種原因,如果寫入鏈接列表的方法將其設置爲一個任務,並且從鏈接列表中讀取一個低優先級的線程的方法,程序會以更快的速度完成。換句話說,我experiense fastests結果時做:
Task.Factory.StartNew(AddItems);
new Thread(startProcessingItems) { Priority = ThreadPriority.Lowest }.Start();
while(completed==false)
Thread.Sleep(0);
也許是因爲第一個任務是做的比其他線程,這就是爲什麼一切作爲一個整體將更快地完成,如果我設定的第二種方法低優先級這麼多的工作。
反正現在我的問題是startProcessingItems
使用ThreadPriority =最低運行。我怎麼能改變它的優先級最高?如果我在該方法中創建新的任務,它將以低優先級運行嗎?基本上startProcessingItems以列表結束,一旦它有了這個列表,我想開始以最高優先級執行。
我有一個名爲listLock的鎖,每當我添加或刪除一個使用鎖的項目時。但我想我會使用blockingCollection來代替。 +1謝謝 –
@TonoNam Locking可以解決比賽條件問題,但BC會更好。它也可能會表現得更好,因爲在大多數情況下新的Concurrent集合比鎖定正常集合要好得多。 –
非常感謝。我從這裏學到的東西比任何其他地方都要多。 –