如果同时生成多个线程(或进程),假设任务是CPU绑定的,那么生成与物理处理器数量相同还是逻辑处理器数量相同的线程更好?还是介于两者之间的某个数字(比如3个线程)更好?性能是否取决于正在执行的指令类型(比如非本地内存访问是否与缓存命中有很大不同)?如果是这样,请问在哪些情况下利用超线程会更好?
更新:我提出这个问题的原因是,我记得在某个地方读到过,如果您有与虚拟处理器数量相同的任务,那么同一物理核心上的任务有时可能会使CPU资源匮乏,并防止彼此获得所需的资源,这可能会降低性能。这就是为什么我想知道生成与虚拟核心数量相同的线程是否是一个好主意。
更新:我提出这个问题的原因是,我记得在某个地方读到过,如果您有与虚拟处理器数量相同的任务,那么同一物理核心上的任务有时可能会使CPU资源匮乏,并防止彼此获得所需的资源,这可能会降低性能。这就是为什么我想知道生成与虚拟核心数量相同的线程是否是一个好主意。