我在10 times
和windows cmd line
上运行了代码every time
我得到same output
我在same code
上运行ideone ,10 times
,每次我same output
我的问题是:
根据我的代码,子线程必须为500ms
和1000ms
的主线程休眠所以我认为在主线程运行once
之后,子线程运行{{1}但是在twice
中,孩子一次cmd output
和3 times
其他时间。为什么?
1 time
和ideone
的输出有所不同?
这是我的代码
cmd
答案 0 :(得分:2)
出现这种差异有几个原因:
sleep
。这基本上会使线程停用一段时间,但无法保证它会立即唤醒。如果你想要特定的顺序,你应该使用同步原语,如互斥和条件变量。答案 1 :(得分:0)
您似乎假设您的程序将在计时器用完后立即恢复。除非您使用的是控制所有流程和优先级的实时系统,否则在任何计算机上都不一定如此。 但是,在具有中等负载的机器上,行为可能就像ideone所表现出的行为一样。不可否认,奇怪的是你的Windows机器总是生成相同的输出,但它并没有改变这样一个事实,即你唯一的保证就是你的线程将在你指定的时间内至少休眠,而不是AT MOST。如果需要,可以在输出中包含时间戳以验证这一点。