2014-06-09 40 views
0

我想設置多個特定線程的cpu-affinity。Powershell 4 - 爲運行空間和多線程設置處理器關聯

到目前爲止我發現的所有參考文獻都涉及設置進程(PID)的cpu-affinity但不是線程。有沒有辦法在使用.Net運行空間時完成此操作?還是我想做一些不可能的事情?

其基本思想是:我有一個20核心框,並希望獲得在覈心之間均勻分佈的線程。否則,他們都會在一個核心上砰砰作響。

謝謝!

+0

20核心!你好爛! ;-)你是如何導致額外的線程被分解?你在使用RunspacePool還是其他的東西? –

+0

是的...它的一個大盒子:-)是的,我使用的是運行空間池。 – Jeremy

回答

1

我不確定.Net包裝,但Win32 api SetThreadAffinityMask可以滿足您的需求 - 請參閱文檔:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686247(v=vs.85).aspx

+0

我不確定這將如何與Runspaces綁定。我不認爲你有任何例子? – Jeremy

+0

舉例:http://khason.net/blog/parallel-programming-well-it%E2%80%99s-all-about-cpu-affinity-or-how-to-set-processor-affinity-in- wpf/ –

+0

運行空間具有ThreadOptions屬性 - 如果您使用ReuseThread(用於運行空間池)或UseCurrentThread,則可以確保運行空間不會創建新線程,因此每個運行空間設置一次線程親緣關係就足夠了。 –