sleep()
中unistd.h
的行为在Linux http://man7.org/linux/man-pages/man3/sleep.3.html中得到了很好的定义。
问题:
std::this_thread::sleep_for
的行为?如果是,则行为平台是否相关? (我希望不是)
sleep()
的最佳方法是什么?根据我的知识,可以通过在调用sleep()
之前阻塞所有信号来完成此操作。 最佳答案
没有。
由于未指定,因此可以。
我在Linux上进行了测试,并且信号确实过早中断了睡眠。
最佳实践是不需要不可中断的sleep
。 sleep
返回中断时的睡眠时间,因此,为防止过早唤醒,您可以使用循环简单地在中断后恢复睡眠:
int time = 10;
while(time = sleep(time));
不幸的是,
this_thread::sleep_for
并非如此,它不会返回中断后剩余的时间。