c++ 实现延迟方法

参考c++中实现sleep的三种方式(跨平台)_鸟哥01的博客-CSDN博客_c++ sleep

C++ yield()与sleep_for() - yepanl的个人空间 - OSCHINA - 中文开源技术交流社区

1、stl方式
    std::this_thread::sleep_for(std::chrono::milliseconds(3000));

或std::this_thread::sleep_for(std::chrono::seconds(3));

(1)std::this_thread::yield (): 线程调用该方法时,主动让出 CPU,并且不参与 CPU 的本次调度,从而让其他线程有机会运行。在后续的调度周期里再参与 CPU 调度。这是主动放弃 CPU 的方法接口。

    (2)std::sleep_for ():线程调用该方法时,同样会让出 CPU,并且休眠一段时间,从而让其他线程有机会运行。等到休眠结束时,才参与 CPU 调度。这也是主动放弃 CPU 的方法。

    两者的不同很明显,yield () 方法让出 CPU 的时间是不确定的,并且以 CPU 调度时间片为单位。而 sleep_for () 让出 CPU 的时间是固定的。

    yield () 的实现依赖于操作系统 CPU 调度策略,在不同的操作系统或者同一个操作系统的不同调度策略下,表现也可能是不同的。

2、用boost实现, 没有用过

boost::this_thread::sleep( boost::posix_time::seconds(3) );

boost::this_thread::sleep( boost::posix_time::milliseconds(3000) );

3、

#ifdef _WIN32

#include <windows.h>

#else

#include <unistd.h>

#endif // _WIN32

void sleepcp(int milliseconds) // 跨平台 sleep 函数
{
    #ifdef _WIN32
        Sleep(milliseconds);//释放cp
    #else
        usleep(milliseconds * 1000);
    #endif // _WIN32
}
 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

woquNOKIA

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值