有没有办法关闭多线程或限制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. C#限制线程的CPU使用率
- 2. 多线程和多核心
- 3. 核心数据多线程使用
- 4. 多线程核心数据
- 5. 多核心处理器中的线程
- 6. 在核心图中绘制多线图
- 7. 限制Caffe CPU内核使用率?
- 8. ASP.NET核心Web应用程序控制台立即关闭
- 9. 多线程程序的核心转储
- 10. Asp.net核心内存使用限制
- 11. 核心数据和多线程编程
- 12. 残破的多线程核心数据
- 13. 双核心机器上的多线程?
- 14. 用F#配置EF核心#
- 15. 在多线程环境中限制连接组的速率
- 16. 使用核心数据使用多线程和通知
- 17. 如何通过线程限制核心数量
- 18. 从核心数据和多线程中获取数据时的效率
- 19. 优雅地关闭了多线程无限循环的程序
- 20. 线程OutOfMemoryError,强制关闭
- 21. 限制线程和/或重复使用线程的迭代器?
- 22. Node.js线程池和核心使用
- 23. 关闭多线程应用程序
- 24. 关闭多线程NSDocument
- 25. Java多线程未关闭线程
- 26. MATLAB:控制数字核心/线程
- 27. iPhone核心数据和多线程
- 28. 核心数据代码和多线程
- 29. 多线程核心数据iOS崩溃
- 30. 故意限制只有一个线程的CPU使用率
就我所知,F#应用程序不使用app.config文件。至少我没有看到添加一个选项,当我点击将项目添加到项目中时。 – 2009-02-06 17:42:47