![]() |
1
3
他们可能会。这取决于运行的其他程序可能也在使用各种核心,包括操作系统。 简而言之,操作系统应该尽量均匀地分布线程,但是试图预测每个线程如何以及何时放置在每个核心上是徒劳的。 |
![]() |
2
5
操作系统将根据线程状态、优先级等决定。 不能保证线程都在不同的处理器上运行。实际上,对于线程执行顺序,几乎没有保证。它们可能都在同一个处理器上运行。它们可能都是并行运行的,或者根本不运行。这不太可能,但你没有任何保证。 |
![]() |
3
2
Msdn about multiple processors 解释如何强制特定处理器上的特定线程。您通常依赖操作系统。 您可以使用getSystemInfo查询处理器的数量。 |
![]() |
4
2
您可能感兴趣的是,您可以通过使用
然而,在几乎所有情况下,最好让操作系统管理线程到核心的分配。只有在非常特殊的情况下(例如,如果运行的高性能代码会受到上下文切换和缓存刷新的不利影响),才需要手动设置线程关联。 |
![]() |
5
1
默认情况下,您创建的所有线程都是 适于居住的 在所有CPU的所有核心上执行。但是,由于您的线程不是计算机中唯一的线程,因此这些核心在您的线程中并非100%的时间都可用。因此,调度程序将为您的线程提供一个相当大的可用CPU能力。 因为线程可以在任何地方运行,所以在线程等待另一个内核可用时,您将永远不会遇到核心什么都不做的情况。如果在一台4核机器上有4个可运行的线程,这意味着所有的内核都会很忙。 注意:线程并不总是可运行的,例如,如果它在等待I/O . |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
![]() |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
![]() |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
![]() |
rhymes · 如何让线程操作相同的java列表 3 年前 |