有沒有辦法關閉多線程或限制F#應用程序使用的內核數量?我知道這不會在生產環境中完成,但我很好奇,如果我必須在單個核心繫統上實際安裝應用程序才能看到它的性能如何。關閉多線程或限制F#中的核心使用率?
2
A
回答
3
你可以簡單地通過對當前進程的處理器親和性設定值來設置該爲你的應用程序的開頭:
System.Diagnostics.Process.GetCurrentProcess().ProcessorAffinity <- nativeint 1
這將有效地限制使用過程中系統上的第一個CPU核心。
0
您可以通過tweaking the registry來設置進程關聯,這會限制您的應用程序的期望。
2
調整寄存器或使用Process.ProcessorAffinty直接修改windows進程調度器。這是一個糟糕的做法,因爲它依賴於平臺,而且還會產生難以確定原因的程序行爲。如果可能的話,最好通過.NET本身來完成,而不使用像System.Diagnostics.Process這樣的PInvoke包裝器。
如果你只想要你的應用程序中添加使用一個單獨的線程我建議設置垃圾收集器是非併發以下到您的app.config:
<configuration>
<runtime>
<gcConcurrent enabled="false"/>
</runtime>
</configuration>
欲瞭解更多信息,請參閱我的文章關於此主題here。
如果要設置線程數的上限和下限的顯式限制,最好使用ThreadPool對象。通過使用SetMaxThreads和SetMinThreads,您可以安全地執行這些限制,而無需觸摸Windows系統調度程序。
使用ThreadPool的唯一重要限制是在使用此方法時,不能將線程的最小數目設置爲小於計算機中處理器的數量。
相關問題
- 1. android如何強制cpu核心離線(關閉核心)
- 2. C#限制線程的CPU使用率
- 3. 多線程和多核心
- 4. 核心數據多線程使用
- 5. 多CPU核心中的Java多線程
- 6. 多線程核心數據
- 7. 多線程 - 線程每個核心
- 8. 多核心處理器中的線程
- 9. 在覈心圖中繪製多線圖
- 10. 限制Caffe CPU內核使用率?
- 11. ASP.NET核心Web應用程序控制臺立即關閉
- 12. 多線程程序的核心轉儲
- 13. 使用多核心的Python中的線程化
- 14. 與CPU核心的Java線程關係
- 15. Asp.net核心內存使用限制
- 16. 核心數據和多線程編程
- 17. 雙核心機器上的多線程?
- 18. java多線程的核心概念
- 19. 殘破的多線程核心數據
- 20. 用F#配置EF核心#
- 21. 爲什麼單線程應用程序佔用多核並限制了CPU使用率
- 22. 通知中心或關閉?
- 23. 在多線程環境中限制連接組的速率
- 24. 使用核心數據使用多線程和通知
- 25. 確保所有線程都關閉或強行關閉線程?
- 26. 如何通過線程限制核心數量
- 27. 關於多線程核心數據的澄清
- 28. 關於CPU核心數量的多線程和並行度
- 29. 從核心數據和多線程中獲取數據時的效率
- 30. Node.js線程池和核心使用
就我所知,F#應用程序不使用app.config文件。至少我沒有看到添加一個選項,當我點擊將項目添加到項目中時。 – 2009-02-06 17:42:47