【发布时间】:2008-12-28 12:36:52
【问题描述】:
我有一些关于多线程编程和多核使用的问题。
我特别想知道操作系统和/或框架(这是 .NET)如何处理大量使用的内核。
这是我关于线程的问题:
- 当产生一个新线程时,将线程分配给特定内核的算法是什么?
- 循环型算法
- 随机
- 目前使用最少的内核
- 如果不是当前使用最少的内核,那么确定这种类型的代码是否会使线程的典型使用相形见绌,从而使事情变得更糟?
- 线程是否在其生命周期内从一个内核移动到另一个内核?如果是这样,这是为了处理由于某种原因被“过度使用”的内核,因此操作系统会尝试将线程转移到使用较少的内核以帮助系统?如果没有,为什么不呢?
我的最后一个问题,基本上是对上述内容的重用,是关于 .NET ThreadPool 类的,它处理诸如 .BeginInvoke 之类的事情。这门课做这些事情吗?如果不是,为什么不呢,还是应该这样做?
有什么办法可以调整这种处理方式,在操作系统中暗示这个特定线程,当你给它分配一个核心时请多加注意,因为我知道它会使用很多 cpu。这有意义吗?或者“很多 cpu”只是相对的,因此还不够好?
【问题讨论】:
标签: .net multithreading multicore