2017-07-31 16 views
0

我想設置進程以使用所有處理器。我試過C++ SetProcessAffinityMask使用所有處理器

SetProcessAffinityMask(GetCurrentProcess(), 0); 

但它沒有設置到所有的處理器。

+0

如果SetProcessAffinityMask失敗,則使用GetLastError檢索任何錯誤代碼。你的程序產生多個線程嗎?如果是,那麼你可以使用SetThreadAffinityMask和一個線程句柄來定位一個特定的核心,而不是使用 – Asesh

回答

1

如果您閱讀了關於SetProcessAffinityMask的Microsoft文檔,您會發現需要指定1位才能在該處理器上運行。您所做的調用不會讓您的進程在任何CPU上運行,因此可能會被拒絕。檢查您的SetProcessAffinityMask呼叫的返回值,如有必要請致電GetLastError以查明原因。

將一個新進程設置爲在所有CPU上運行,因此您不需要調用此函數來指定該進程,除非您的進程由另一個因其自身原因而想要限制的進程產生。

在具有64個以上CPU的系統上運行時,還有一些注意事項。

+0

wops,愚蠢的是,我會刪除評論。 –