我有1500個線程..我希望他們能夠在12個處理器上運行... 要做到這一點,我打電話給 SetThreadAffinityMask(GetCurrentThread(),1<<(threadnum%numprocessors))
; numprocessors = 12。 是否正確使用了面罩? 它需要可擴展性,也就是說,如果我希望它只在11個處理器上運行,那麼 SetThreadAffinityMask(GetCurrentThread(),1<<(threadnum%numprocessors));
其中numprocessors = 11。SethreadAffinityMask()正確的用法?
1
A
回答
2
句法SetThreadAffinityMask(GetCurrentThread(),1 < <(GetThreadId()%numprocessors))這是正確的,但它不只是因爲你有很多線程和處理器的使用親和力是一個好主意。它可能會干擾調度程序並降低性能。您可以將其用於某些線程以最小化緩存未命中。當一個線程從一個處理器移到另一個處理器時,會發生緩存未命中。
5
這是正確的。
但是出於性能和效率的原因,我建議你改變你的線程模型,不知何故線程數量等於CPU執行核心數量,然後這些線程在你的1500個任務/工作項目上工作「任務管理器」。
,如果你不希望創建自己的「任務管理器」,你可以使用windows ThreadPool API,你把任務分配給被O管理的「線程池」/S
相關問題
- 1. Py2neo - 「set_node_property」的正確用法
- 2. jqplot dateaxisrenren正確的用法
- 3. System.Web.UI.WebControls.FontInfo正確的用法
- 4. 正確的UserControl用法?
- 5. Ruby的正確用法
- 6. ormlite JdbcPooledConnectionSource正確的用法
- 7. scipy.optimize.fmin_bfgs的正確用法
- 8. HashMap - 正確的用法?
- 9. 使用正確的方法
- 10. 正確的ApplicationContext用法?
- 11. 抄寫正確的用法?
- 12. 正確的REST用法
- 13. TransformGroup的正確用法
- 14. indexedDB正確的用法
- 15. 正確的getopt用法
- 16. 正確的方法調用
- 17. org.simpleframework.xml.ElementMap的正確用法?
- 18. Win2D:CanvasVirtualControl的正確用法
- 19. Google OAuth2 - 正確的用法?
- 20. HBase HTablePool:正確的用法
- 21. BoneCP的正確用法
- 22. jQuery.text正確的用法
- 23. @autoreleasepool的正確用法
- 24. 調用MembershipProvider方法的正確方法?
- 25. 正確的語法
- 26. 正確調用方法:(Java)
- 27. UITableViewCell無法正確重用?
- 28. 無法正確使用DataFrame.Apply
- 29. 無法正確使用min_element()
- 30. 無法正確使用Math.random