Ice*_*ind 4 c# vb.net multithreading
在C#中,当我创建一个新线程并在该线程上执行一个进程时,有没有办法将它分配给一个特定的核心?或者操作系统是否自动处理所有这些?我写了一个多线程应用程序,我只是想确保它针对双/四核功能进行了优化.
谢谢
您可以强制您的线程在特定内核上运行,但通常您应该让操作系统处理它.操作系统自动处理大部分内容.如果在四核系统上运行四个线程,操作系统将在所有四个核心上安排它们,除非您采取措施防止它发生.操作系统还会尝试保持单个线程在同一个内核上运行,而不是为了获得更好的性能而转移它们,如果有可用的空闲内核,则不要在同一个超线程内核上安排两个正在运行的线程,等等.
此外,您应该使用线程池,而不是为工作创建新线程.系统会将其缩放为系统上可用的处理器数量.
Windows Internals是一本很好的书,涵盖了Windows调度程序的工作方式.
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |