我在Linux / gcc上使用N
创建pthread_create
个线程。每个线程尽可能快地使用for (;;) printf(...)
ID写入,没有别的。我让整个程序使用usleep
运行3秒钟,并注意到我的4-core
CPU时N=4
它产生大约1,000,000行,而N=8
它产生大约4倍尽可能多。 4核CPU 8线程表现更好的原因是什么? CPU没有启用超线程。
答案 0 :(得分:2)
I / O和CPU操作非常不同。如果运行CPU密集型计算,则N =核心数将是最佳的。对于I / O,最佳数量可以更高。
答案 1 :(得分:0)
如果你有4threads,你将不会在每个核心上运行一个线程。两个都没有8threads。 多核心的想法是将所完成的工作分开。此外,您只需显示线程ID即可实现轻量级CPU工作。因此,它不使用CPU容量,而是处理显示事件的能力。