今天给大家分享一个类似多线程任务的方法,具体如下:

std::shared_future<int> tmp = std::async(p1,p2,p3);
int tmpInt = tmp.get();

1、std::future是一个非常有用也很有意思的东西,简单说std::future提供了一种访问异步操作结果的机制。

2、std::async代替线程的创建;

第一个参数是创建线程的策略(1、std::launch::async:在调用async就开始创建线程;2、std::launch::deferred:延迟加载方式创建线程。调用async时不创建线程,直到调用了future的get或者wait时才创建线程。)

第二个参数是线程函数

  第三个参数是线程函数参数

3、get()就是用来获取线程返回的结果

总结:

  当你需要并发执行多个任务,但是还要按顺序得到执行的结果,那么future的用途就来了,当你执行std::shared_future<int> tmp = std::async(std::launch::async,p2,p3);会立即创建线程去执行你的任务,然后在你需要的地方调用get()方法获取返回值,如果没有执行完,get()会等待,这样你得到的返回值就是按顺序得到的。

大家按照自己的业务去使用,有疑问可以留言。

转载于:https://www.cnblogs.com/xupeidong/p/9851357.html

C++,std::shared_future的使用相关推荐

  1. C++11中std::shared_future的使用

    C++11中的std::shared_future是个模板类.与std::future类似,std::shared_future提供了一种访问异步操作结果的机制:不同于std::future,std: ...

  2. C++11 并发指南四(future 详解三 std::future std::shared_future)

    上一讲<C++11 并发指南四(<future> 详解二 std::packaged_task 介绍)>主要介绍了 <future> 头文件中的 std::pack ...

  3. C++ 并发指南< future >(3)std::future std::shared_future

    std::future介绍 简单地说,std::future 可以用来获取异步任务的结果,因此可以把它当成一种简单的线程间同步的手段. std::future 通常由某个 Provider 创建,你可 ...

  4. C++11中std::future的使用

    C++11中的std::future是一个模板类.std::future提供了一种用于访问异步操作结果的机制.std::future所引用的共享状态不能与任何其它异步返回的对象共享(与std::sha ...

  5. C++并发编程线程间共享数据std::future和sd::promise

    线程间共享数据 使用互斥锁实现线程间共享数据 为了避免死锁可以考虑std::lock()或者boost::shared_mutex 要尽量保护更少的数据 同步并发操作 C++标准库提供了一些工具 可以 ...

  6. std::future和std::promise和std::packaged_task

    std::future 其实future有两个兄弟,一个是std::future, 一个是它大哥std::shared_future.他们的区别就是std::future只支持移动语义,它所引用的共享 ...

  7. C++——异步操作(std::future、std::async、std::packaged_task、std::promise)

    文章目录 一.std::future与std::async 1.基本概念 2.代码演示 二.std::future与std::packaged_task 1.基本知识 2.代码演示 三.std::fu ...

  8. future promise shared_future简单使用

    #include #include #include /furture 和promi******************/ int display(const int& value) { re ...

  9. C++11 并发指南四(future 详解二 std::packaged_task 介绍)

    上一讲<C++11 并发指南四(<future> 详解一 std::promise 介绍)>主要介绍了 <future> 头文件中的 std::promise 类, ...

  10. C++ std::thread

    std::thread Defined in header class thread The class thread represents a single thread of execution. ...

最新文章

  1. spring @component的作用
  2. java tf值搜索_搜索引擎优化 TF_IDF之Java实现
  3. 《疯狂Java讲义》5
  4. DeepLearning based on PaddlePaddle系列一
  5. gdb 调试 TuMediaService
  6. Linux如何避免每次开启 CentOS 时,都要手动开启 sshd 服务,防止连接不上Xshell
  7. Android ListView反复调用getView和getCount
  8. 为什么需要注册中心?是用 Eureka 还是 Nacos?
  9. 域名注册管理相关的三个机构:ICAAN、interNIC、CNNIC
  10. python 实现modBus协议的crc校验算法
  11. 基于Go的马蜂窝旅游网分布式IM系统技术实践
  12. 大数运算(加、减、乘、除)
  13. Iometer存储测试工具参数说明-4test setup
  14. 深度学习:将新闻报道按照不同话题性质进行分类
  15. c语言n的阶乘 longfact,如何定义函式fact(n) 计算n的阶乘:n!=1*2*……*n,函式返回值型别是double?...
  16. 给自己定一系列小目标
  17. 风口上的小游戏还有怎样的发展空间?7位腾讯技术专家为你解答
  18. Android 拍照 图片 颠倒90度
  19. VS Code写C语言输出long double类型数据不正确的问题
  20. python热更新原理_Python功能点实现:数据热更新

热门文章

  1. 树的子结构(C++)
  2. Security+ 学习笔记23 帐户管理
  3. DHCPv4技术原理
  4. Linux PXE详解
  5. SSM框架面试题及答案整理
  6. 2019年前端面试都聊啥?一起来看看
  7. c c++ 宏定义中#, ##, #@的含义
  8. apache网络服务的搭建和配置
  9. device 查看tensor_【ML实践笔记】05-DeepLizard教程8-9:在PyTorch中创建tensor
  10. qt socket 传递结构体 结构体中有list_GO语言入门-14、结构体