.net - 默认情况下,线程是否在多个内核上运行?

标签 .net multithreading

在多核处理器中,Windows应用程序运行许多线程。默认情况下,线程是否在多个内核上运行?
我的意思是每个线程都可以在单个内核上运行。

编辑:

如果我的应用程序运行多个线程,则所有这些线程将在一个进程上运行。

没有并行编程

流程可以在许多核心上运行吗?

我的应用程序是否受益于多核处理?

最佳答案

(您的问题还不清楚。我希望我已经回答了您的问题,但是请您澄清是否有帮助。)

这取决于调度线程的操作系统。如果可能的话,就高速缓存一致性等而言,将线程保留在同一内核上具有优势-但强制将其保留在同一内核上通常过于严格。

简而言之:是的,线程可以在不同的内核上运行。当然,这不是同一时间-只是执行的一个线程-但它可以在T0时刻在核心C0上执行,然后在T1时刻在核心C1上执行。

编辑:您谈论的是一个运行多个线程的应用程序,但是“没有并行编程” —在术语上是矛盾的。如果使用多个线程,则使用并行编程,默认情况下,这些线程可以在多个内核上运行。如果只使用一个线程,那么拥有多个内核将不会有任何好处-当然,其他进程可以使用其他内核。

关于.net - 默认情况下,线程是否在多个内核上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942632/

相关文章:

.net - vbScript System.Collections.ArrayList 对象不支持... list.Add

Java连接线程池和连接工厂?

multithreading - 在 C++11 中实现 boost::barrier

java - Executors.newScheduledThreadPool 中的拒绝处理程序

java - 停止线程 onclicklistener java

c# - 匿名数组的Json反序列化

.net - 如何从 VB.Net 中的字典(字符串,对象)中重铸对象

asp.net - 如何在 VS 2010 中调试 .NET Web 服务初始化代码?

python - 使用 ZeroMQ 实现多线程服务器

.net - 如何改善 Windsor 3.0 的启动时间?