我們可以在C#應用程序中設置兩個線程或兩個任務以不同的處理器親和力執(zhí)行嗎?我已閱讀有關內(nèi)容,SetThreadAffinityMask但未找到應如何使用的示例。另外,TPL(任務并行庫)是否可以執(zhí)行兩個優(yōu)先級高的線程/任務以使用100%CPU?
3 回答

一只萌萌小番薯
TA貢獻1795條經(jīng)驗 獲得超7個贊
Process
和ProcessThread
對象具有可以直接操縱以讀取/更改多達64個處理器的相似ProcessorAffinity
性的IntPtr
類型的屬性:
using System.Diagnostics;... Process Proc = Process.GetCurrentProcess(); long AffinityMask = (long)Proc.ProcessorAffinity; AffinityMask &= 0x000F; // use only any of the first 4 available processors Proc.ProcessorAffinity = (IntPtr)AffinityMask; ProcessThread Thread = Proc.Threads[0]; AffinityMask = 0x0002; // use only the second processor, despite availability Thread.ProcessorAffinity = (IntPtr)AffinityMask;...
您還可以使用線程的IdealProcessor
屬性,使調(diào)度程序更喜歡在指定的處理器上運行線程(無保證)。
是的,就是這么簡單:)
參考:MSDN ProcessThread.ProcessorAffinity屬性
- 3 回答
- 0 關注
- 810 瀏覽
添加回答
舉報
0/150
提交
取消