在多核处理器中,Windows应用程序运行许多线程。默认情况下,线程是否在多个内核上运行?
我的意思是每个线程都可以在单个内核上运行。
编辑:
如果我的应用程序运行多个线程,则所有这些线程将在一个进程上运行。
没有并行编程
流程可以在许多核心上运行吗?
我的应用程序是否受益于多核处理?
最佳答案
(您的问题还不清楚。我希望我已经回答了您的问题,但是请您澄清是否有帮助。)
这取决于调度线程的操作系统。如果可能的话,就高速缓存一致性等而言,将线程保留在同一内核上具有优势-但强制将其保留在同一内核上通常过于严格。
简而言之:是的,线程可以在不同的内核上运行。当然,这不是同一时间-只是执行的一个线程-但它可以在T0时刻在核心C0上执行,然后在T1时刻在核心C1上执行。
编辑:您谈论的是一个运行多个线程的应用程序,但是“没有并行编程” —在术语上是矛盾的。如果使用多个线程,则使用并行编程,默认情况下,这些线程可以在多个内核上运行。如果只使用一个线程,那么拥有多个内核将不会有任何好处-当然,其他进程可以使用其他内核。
关于.net - 默认情况下,线程是否在多个内核上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942632/