跟我学C++中级篇——sleep和wait的不同

一、线(进)程的等待

在实际的开发场景中,经常遇到一种情况,需要某一线程进行等待一段时间再工作。这种等待可能是一次性的,也可能是定时的;也有可能是间断但时间可等可不等的。举一个简单例子,线程想每隔一分钟去查询一下当前的状态从而决定是否工作。还有某些登陆的回退机制,可能都需要做时间的等待。这就需要开发者提供一套时间处理的方式。
在相关的库和API中,提供了两大类的这种等待的方法。一种是类Sleep的方式(包括usleep等),当前线程单纯睡(休)眠;另外一种是Wait方式,等待一段时间或者永久等待一种触发。下面就这两大类进行一下分析和说明。

二、sleep睡眠等待

一般来说,sleep睡眠方式的等待,在C++11以前C++中并未提供相关的方法,大多是使用相关的OS提供的接口。它们这些接口,虽然应用方式类似,但一些细节是不同的,比如函数的名字在Windows上叫Sleep而在Linux上是sleep。参数的单位也不同,在Windows中,它的单位是毫秒,而在类Linux环境中为秒。
sleep应用的优势在于简单方便,不需要什么额外库支持,一般系统都支持。
下面看例子:

#include <chrono>
#include <iostream>
#include <thread>
#include <unistd.h>

auto now() {
    return std::chrono::steady_clock::now(); }

auto awake_time()
{
   
    using std::chrono::operator""ms;
    return now() + 2000ms;
}
void testSleep(){
   
    sleep(3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值