我想测量时间(非常精确地以毫秒为单位)并在某个时间启动另一个线程(总共4个)。我尝试过:
double Time()
{
duration = (std::clock() - start);
return duration;
}
//...
start = std::clock();
while (Time() < 1000)
{
//Start thread...
//...
}
它有效,但在每次实验中我都会得到不同的结果(差别很小)。 它甚至可能吗?是否取决于有多少程序在后台运行(它会降低我的电脑速度)?所以,如果有可能我应该使用什么?感谢
(对不起我的英文)
答案 0 :(得分:1)
操作系统以量子运行 - 少量处理块低于我们的感知水平。
在单个量子中,CPU应该合理稳定地运行。如果您的任务将使用一个以上的时间量,那么操作系统将可以自由地使用一些时间来执行其他任务。
使用condition variable您可以notify_all唤醒任何等待的线程。
因此,启动线程数,但在测量它们并开始工作之前让它们等待condition_variable。然后当condition_variable notify_all线程将运行时。如果它们同时启动,您应该获得同步稳定的结果。
出现差异。