时间切片的问题

use*_*331 5 c multithreading pthreads

我试图看到时间切片的效果.它如何消耗大量的时间.实际上,我试图将某项工作划分为多个线程并查看效果.

我有一个两核处理器.所以两个线程可以并行运行.我试图看看我是否有一个由两个线程完成的工作,如果我有相同的工作由t线程完成,每个线程都在完成工作.时间切片在其中发挥了多少作用

由于时间切片是一个耗时的过程,我期待当我使用双线程进程或通过线程进程执行相同的工作时,t线程进程所花费的时间将更多

但是,我发现事实并非如此.我尝试了t = 10.而且它仍然比2线程进程更快.例如.如果我必须进行10,000,000次迭代,使用两个线程进程,我将使用2个线程进行5,000,000次迭代,以便我们总共进行10,000,000次迭代.如果我必须处理10个线程进程,我将让每个线程进行1,000,000次迭代,这样我们总共有10,000,000个.

我期待10个线程进程消耗更多时间.但事实并非如此.代码中是否有任何错误?它看起来很好

有什么建议?

Mic*_*urr 0

您的机器上有多少个 CPU 核心?关于 CPU 绑定线程的问题是,即使在只有一个线程时设置和调度不存在的线程可能会产生开销,但如果这些线程实际上可以同时执行(而不是仅仅表现为同时执行),那么线程仍然可以产生大于开销成本的收益。