C++ 11之前并未提供专门的休眠函数。c语言的sleep、usleep其实都是系统提供的函数,不同的系统函数的功能还有些差异。
在Windows系统中,sleep的参数是毫秒。
1 |
|
在类Unix系统中,sleep()函数的单位是秒。
1 |
|
从C++11开始,中C++标准库提供了专门的线程休眠函数,使得你的代码可以独立于不同的平台。
1 2 3 |
|
1. 让线程休眠一段时间
std::this_thread::sleep_for用于Block当前线程一段时间。
1 2 |
|
sleep的时间间隔从纳秒到小时都有具体的定义。
1 2 3 4 5 6 |
|
比如我们想要一个线程休眠100ms。
1 |
|
我们想要一个线程休眠1分钟:
1 |
|
完整的代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
输出:
Hello waiter
Waited 2000.12 ms
2. 休眠直至到一个时间点
1 2 |
|
sleep_until会阻塞当前线程直至未来某个时间点到达。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
程序输出:
Current Time :: Sun Oct 11 02:57:38 2020
Going to Sleep Until :: Sun Oct 11 02:57:48 2020
Current Time :: Sun Oct 11 02:57:48 2020