future 线程异步操作

标准C++17 

这是一个小型实用的线程,它是跟随C++17异步算法一起发行的。 

它的适用场景就是: 

当你想在需要获得线程的执行结果时,如果线程已经结束,那么future对象将立即返回线程的结果,否则它将等待线程结束。 

它对于自定义的异步算法非常适用。下面看一下代码: 

 这里使用async开启了一个线程,线程的处理需要1s的时间处理完成。 

主线程在3秒后想要获得子线程的处理结果,于是使用get来获取,此时呢,因为future对象的线程已经结束,所以get将立即返回线程的结果。 

那么也可以判断线程的状态进行下一步操作,这样可以防止线程在未返回的时候get出现的阻塞。  这里使用wait_for函数来指定等待的超时时间,做出判断,如果在等待的2秒之内,线程结束了,那么我们就可以直接get结果,否则再做其他打算。 

还有一种,就是在指定的系统时间内,等待线程的结果: 

 那么在当当前的系统时间+2秒后的这个时间内,如果线程结束了,调用get来获取结果。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值