多核处理器中的多线程应用程序

Bha*_*ani 1 multithreading multicore

这是一个有点普遍的问题.假设我在Java或VC++中创建一个简单的应用程序,它创建了两个线程,我在多核系统中运行应用程序.如果没有针对哪个核心运行的任何特定指令,应用程序本身是否会将线程分布到各个核心?

谢谢.

Gre*_*g D 8

应用程序不会分发线程,但操作系统会.这是它的工作.:)

值得注意的是,线程可以在单个运行过程中频繁地在内核之间交换,因为其他负载和中断可能会遇到cpu核心.

如果您决定需要指定特定线程可以运行的核心,则OS通常会提供一种机制,将线程的"亲和力"设置为特定的cpu.这在高级优化方案中可能是有价值的,以保持特定线程的缓存热,例如,通常不需要它.