c++11 之 async

promise和promise基本原理:

线程1初始化一个promise对象和一个future对象然后把promise传递给线程2

线程2于是对线程1有了一个promise

future相当于一个接受一个promise,用来获取未来线程2传递的值


线程2获取到promise后,需要对这个promise传递有关的数据,之后线程1的future就可以获取数据了。


线程1阻塞等待线程2的数据到达

 

 

使用方法:https://blog.csdn.net/hyl999/article/details/106260324

1 promise和future成对出现并绑定:

    //声明一个std::promise对象promise1,其保存的值类型为int
    std::promise<int> promise1;
    //声明一个std::future对象future1,并通过std::promise的get_future()函数与promise1绑定
    std::future<int> future1 = promise1.get_future();

2 创建线程:

    //创建一个线程t1,将函数Thread_Fun1及对象promise1放在线程里面执行
    std::thread t1(Thread_Fun1, std::ref(promise1));
    //创建一个线程t2,将函数Thread_Fun2及对象future1放在线程里面执行
    std::thread t2(Thread_Fun2, std::ref(future1));

3 线程中对promise对象调用set_value,对future对象调用get

 

让promise和future的参数是function:

#include <iostream>
#include <future>
#include <chrono>
#include <functional>
 
//声明一个可调对象T
using T = std::function<int(int)>;        //等同于typedef std::function<int(int)> T;
 
int Test_Fun(int 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值