【发布时间】:2014-11-21 12:46:48
【问题描述】:
Afaik:适用于并行处理的数据的最佳线程数是内核数 - 因为每个线程(理论上)都有自己的内核来运行。对于能够进行超线程处理的 CPU,它是内核数量的 2 倍。如果我错了,请纠正我。
我的问题是底层操作系统(Linux、Winodws OSX)是否会自动实现我的“意图”,例如假设我有,例如,将每个线程分配给一个核心8 个内核和相应的 8 个线程,每个线程都在执行“耗时”任务?
或者反过来:是否可以将线程分配给内核(尤其是在Java)?
【问题讨论】:
-
最佳线程调度是在极少数情况下 np-hard 除外,因此没有操作系统会这样做。现代调度程序足够聪明,如果可能的话,不会将线程从一个核心移动到另一个核心,因为从缓存的角度来看这非常糟糕。
标签: java multithreading operating-system