我一直在調查我正在執行的線程池的不同調度算法。由於我正在解決的問題的性質,我可以假設並行運行的任務是獨立的,不會產生任何新的任務。任務可以具有不同的大小。工作是否總是最合適的用戶級線程調度算法?
我馬上去了最流行的調度算法「偷工減料」,在本地工作隊伍中使用無鎖deque,而且我對這種方法比較滿意。不過,我想知道是否有任何普遍的情況下偷工減料不是最好的方法。
對於這個特定的問題,我對每個單獨任務的大小有一個很好的估計。工作竊取並沒有利用這些信息,我想知道是否有任何調度程序可以提供更好的負載平衡,而不是竊取這些信息(顯然具有相同的效率)。
注意:這個問題與之前的question有關。
我對這個子目標知之甚少,但也許在這個相關問題上的一些答案將有所幫助:http://stackoverflow.com/questions/2552810/work-stealing-vs-work-shrugging – 2010-04-05 08:19:38