似乎Task类为我们提供了使用系统的多个处理器的能力。Thread类是否也可以在多个处理器上工作,或者它是否只在一个处理器上使用时间切片?(假设系统具有多个核心)。
我的问题是,如果线程将/可以在多核上执行,那么任务和并行性有什么特别之处?
发布于 2014-10-03 23:15:41
当您创建一个thread
时,它形成了一组逻辑上的工作。.NET框架将从系统获得CPU时间。多线程很可能会在不同的内核上运行(这是系统处理的事情--甚至.NET对此也没有任何影响)
但是,系统可能会在同一核心上执行所有线程,甚至在执行过程中在多个核心之间移动执行。请记住,您创建的是托管线程,而不是真正的系统线程。
(正确地说,我应该说:系统可以在同一系统中执行您的托管线程-线程,或者对多个托管线程使用多个系统线程。)
也许你想看看这个博客-帖子:http://www.drdobbs.com/parallel/managed-threads-are-different-from-windo/228800359在细节方面的解释非常好。
https://stackoverflow.com/questions/26181616
复制相似问题