我想減少服務於parallel_for_each的線程的線程優先級,因爲在重負載條件下,它們消耗的處理器時間相對於其他線程我的系統。是否建議在parallel_for_each循環中使用Windows API的SetThreadPriority
問題:
1)做parallel_for_each的服務線程繼承調用線程的線程的優先級?在這種情況下,我大概可以在parallel_for_each之前和之後調用SetThreadPriority,並且一切都應該沒問題。
2)另外建議在parallel_for_each中調用SetThreadPriority?這將清楚地爲相同的線程多次調用API。這樣做是否有很大的開銷?
2.b)假設我這樣做,下次調用parallel_for_each時它是否會影響線程優先級 - 即是否需要重置每個線程的優先級?
3)我想知道一般的線程優先級。任何人都想評論:假設我有兩個線程爭奪一個處理器,一個被設置爲「低於正常」,而另一個則是「正常」優先級。粗略地說,一個線程與另一個線程相比,多花費多少處理器時間?
很確定SetThreadPriority不會解決您的問題。您需要修改SchedulerPolicy類,PolicyElementKey :: ContextPriority來控制工作線程的優先級。 –
@Hans確實減少了線程的數量,而不是降低優先級,這是需要的 –