【发布时间】:2020-03-08 06:07:48
【问题描述】:
我在我的 centos 7 服务器中调用了这个函数。
我发现 std::this_thread::sleep_for(chrono::nanoseconds(1)) 实际上睡了一毫秒,有什么解释吗?我认为这可能是由操作系统设置引起的?
【问题讨论】:
-
您是否使用时钟来测量睡眠时间?你的时钟精度可能是 1 毫秒吗?
-
@nick 我做了一个快速循环工作,比如 {for (i=0;i
-
很可能你的时钟分辨率不超过 1 ns。
-
sleep_for的规范是它在至少指定的持续时间内阻止当前线程的执行。实际上,由于调度延迟(任何操作系统中的调度程序都有一定的粒度)和资源争用,它会比这更长。此外,唯一允许精确控制时间的操作系统(例如,将强制睡眠持续时间的上限和下限,而不仅仅是下限)是硬实时系统。大多数通用 unix 操作系统都不是硬实时的。
标签: c++ c++11 operating-system thread-sleep