N个CPU 开N个并发线程 系统会平均分给每个核吗

如题,windows环境,四个核,开四个线程取消息队列,会不会直接只分配给一个核。

如果线程之间没有依赖关系(比如同步、加锁),并且进程本身拥有所有的逻辑CPU,那么线程会在所有逻辑CPU上调度。

个人理解:在各个线程计算的过程,应该会在不同的运算器上进行调度,但从同一个消息队列取数据的时候,还是会因为加锁同步的问题有阻塞的。

如果这样就真正能实现多线程运行,每个线程每个时间片内都能得到运行

N个线程分配几个CPU核来执行取决于Windows内核线程调度算法。Windows提供了一些API(如SetThreadAffinityMask)可以影响内核对线程的调度。

看你用什么并行方式了,如果是线程池,他会根据任务量多少合理分配cpu;openmp即使你开了2n个线程,他也不一定