unistd.h
中的sleep()
函数的行为在Linux系统下有明确定义,可以参考http://man7.org/linux/man-pages/man3/sleep.3.html.
问题:
C++11标准是否定义了
std::this_thread::sleep_for
的信号中断/信号处理程序行为?如果是,该行为是否与平台相关?(希望不是)在Linux系统下,实现不可中断的
sleep()
最佳方法是什么? 根据我的了解,这可以通过在调用sleep()
之前阻止所有信号来完成。
unistd.h
中的sleep()
函数的行为在Linux系统下有明确定义,可以参考http://man7.org/linux/man-pages/man3/sleep.3.html.
问题:
C++11标准是否定义了std::this_thread::sleep_for
的信号中断/信号处理程序行为?如果是,该行为是否与平台相关?(希望不是)
在Linux系统下,实现不可中断的sleep()
最佳方法是什么? 根据我的了解,这可以通过在调用sleep()
之前阻止所有信号来完成。
sleep
。如果被中断,则sleep
返回剩余的休眠时间,因此您可以使用循环在中断后简单地恢复睡眠来防止过早唤醒:int time = 10;
while(time = sleep(time));
不幸的是,this_thread::sleep_for
不会在中断时返回剩余时间。