C++ 11 线程sleep_until

头文件:<thread>                  (C++11)

template<class Clock, class Duration>

void sleep_until(const std::chrono::time_point<Clock, Duration>& sleep_time);

作用:

阻塞当前正在执行的线程直到sleep_time溢出。

sleep_time是和时钟相关联的,也就是要注意时钟调整会影响到sleep_time。因此,

时钟的时长有可能或没有可能会短于或长于sleep_time。Clock::now()返回调用这个函数时的时间,取决于调整方向。该函数也有可能因为调度或者资源竞争而导致阻塞时间延长到sleep_time溢出之后。

参数:

sleep_time 阻塞时长

返回值:

none

异常:

任何从Clock或Duration抛出的异常(由标准库提供的时钟和时长从来都不会抛出异常)

实例:

复制代码

 1 #include <iostream>  
 2 #include <iomanip>  
 3 #include <chrono>  
 4 #include <ctime>  
 5 #include <thread>  
 6 #pragma warning(disable:4996)//加上可去掉unsafe 请使用localtime_s的编译报错  
 7 int main()  
 8 {  
 9     using std::chrono::system_clock;  
10     std::time_t tt = system_clock::to_time_t(system_clock::now());  
11     struct std::tm *ptm = std::localtime(&tt);  
12     std::cout << "Current time: " << std::put_time(ptm, "%X") << '\n'; //必须大写X,若小写x,输出的为日期  
13     std::cout << "Waiting for the next minute to begin...\n";  
14     ++ptm->tm_min;   
15     ptm->tm_sec = 0;  
16     std::this_thread::sleep_until(system_clock::from_time_t(mktime(ptm)));  
17     std::cout << std::put_time(ptm, "%X") << "reached!\n";  
18     getchar();  
19     return 0;  
20 }  

复制代码

结果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值