Hom*_*mam 12 .net multithreading
在多核处理器中,Windows应用程序运行许多线程.默认情况下,线程是否在多个核心上运行?我的意思是每个线程可能在单个核心上运行.
编辑:
如果我的应用程序运行多个线程,则所有这些线程将在一个进程上运行.
没有并行编程..
该流程是否能够在许多核心上进行分配?
我的应用程序是否有利于多核处理?
Jon*_*eet 15
(你的问题还不清楚.我希望我已经回答了你的问题,但是如果你能澄清那些有用的问题.)
这取决于安排线程的操作系统.如果可能的话,在高速缓存一致性等方面将线程保持在同一核心上是有利的 - 但是强制它保持在同一核心上通常过于严格.
简而言之:是的,一个线程可以在不同的核心上运行.当然不是同时 - 它只是一个执行线程 - 但它可以在时间T 0在核心C 0上执行,然后在时间T 1在核心C 1上执行.
编辑:你谈到运行许多线程的应用程序,但"没有并行编程" - 这是一个矛盾的术语.如果您使用多个线程,则使用并行编程,默认情况下,这些线程可以在多个内核上运行.如果您只使用一个线程,那么您将无法从拥有多个内核中获得任何好处 - 当然,除了其他进程可以使用其他内核的事实.
ang*_*son 11
当您启动多个线程时,它们可能会也可能不会在不同的核心上运行.
如果绝对必须,可以使用Thread类的SetProcessorAffinity方法强制线程运行特定的核心.除非你知道为什么需要这样做,否则你真的不应该这样做.
由操作系统来调度线程.
为了最好地利用多个核心,网上有大量的教程和知识文章,但这里有一些提示:
| 归档时间: |
|
| 查看次数: |
9152 次 |
| 最近记录: |