std::future 如何保存多个对象进行同步等待

这篇具有很好参考价值的文章主要介绍了std::future 如何保存多个对象进行同步等待。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

std::future 是一个 C++11 引入的标准库类,可用于异步获取计算结果。通常情况下,std::future 可以通过 get() 函数来等待异步操作完成,并获取其结果。 如果需要等待多个异步操作完成并获取它们各自的结果,可以使用 std::future 的姊妹类 std::shared_future 来实现。 std::shared_future 与 std::future 类似,不同之处在于它可以被多个线程同时访问和等待。因此,可以将多个 std::shared_future 对象保存到一个容器中,然后使用 std::shared_future 的成员函数 wait() 或 get() 等待这些异步操作完成,并获取它们的结果。 例如,假设有两个异步任务 task1 和 task2,它们分别返回类型为 T1 和 T2 的结果。可以使用以下代码来创建 std::shared_future 并保存到一个 vector 容器中:

 

查看代码

std::promise<T1> promise1;
std::future<T1> future1 = promise1.get_future();
std::shared_future<T1> shared_future1 = future1.share();

std::promise<T2> promise2;
std::future<T2> future2 = promise2.get_future();
std::shared_future<T2> shared_future2 = future2.share();

std::vectorstd::shared_future<void> futures;
futures.push_back(shared_future1);
futures.push_back(shared_future2);

接下来,可以使用 std::shared_future 的成员函数 wait() 或 get() 等待这些异步操作完成,并获取它们的结果。例如:

for (const auto& f : futures) {
  f.wait();
}

T1 result1 = future1.get();
T2 result2 = future2.get();

在上面的代码中,wait() 函数等待所有异步操作完成,而 get() 函数分别获取每个异步任务的结果。文章来源地址https://www.toymoban.com/news/detail-501895.html

到了这里,关于std::future 如何保存多个对象进行同步等待的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • openCV 多线程调用多个海康威视摄像头(避免画面不同步),进行人脸识别

    1、创建多个线程来拉取不同的视频流,不使用多线程的话,所有的视频流就在排一个队,会出现画面不同步的情况 代码: 2、使用numpy将多个画面放在同一个frame中,图像就是矩阵,numpy是用来处理矩阵的类 代码:  进行人脸识别,网不好帧率太低

    2024年04月25日
    浏览(101)
  • [全网唯一]通过修改源码使得从ZIP提取文件并在提取时进行重命名保存(博客园同步发布)

    源码位置: /Lib/zipfile.py/ZipFile/_extract_member/zipfile.py或者直接点击extract函数. 在使用python解压缩zip文件时, 由于需要在解压时重命名文件为我想要的格式, 而不巧的是, zipfile包官方源代码没有这个功能... 于是, 在百度之后, 果断放弃寻找现成代码的想法. 在研究了一下extract函数的原

    2024年02月08日
    浏览(36)
  • win11遇到无法保存ip设置。请检查一个或多个设置并重试 问题如何解决

    自从升级win11之后出现了各种各样的问题,系统时常更新,反应慢是常事,也会遇到如无法打开控制面板的情况。也想过换回win10,但我要和win11抗争到底!!! 在做测试时需要设置指定Ip,win11 设置ip的方法有两种,首先要确定好接入内网后的接入点。我这边是 以太网2 ,确定

    2024年02月12日
    浏览(113)
  • 【JavaSE专栏80】多线程通信,多个线程之间如何实现信息传递和同步?

    作者主页 :Designer 小郑 作者简介 :3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN学院、蓝桥云课认证讲师。 主打方向 :Vue、SpringBoot、微信小程序 本文讲解了 Java 中多线程通信的语法和应用场景,并给出了样例代码。多线程通信是

    2024年02月11日
    浏览(43)
  • 利用Python进行单个和多个对象跟踪:meanShift、CamShift、Boosting、MIL算法的详细解析和实现

    一、引言 物体跟踪技术是计算机视觉领域的一个重要研究内容,它的目标是在连续的视频帧中跟踪一个或多个感兴趣的物体。最近几年,随着深度学习技术的快速发展,物体跟踪领域也取得了显著的进步。然而,在深度学习之前,一些经典的物体跟踪算法,如MeanShift、CamSh

    2024年02月14日
    浏览(49)
  • 关于如何在Unity中获取多个重名对象的笔记

    前不久我遇上了一个问题,在不确定路径 或者路径分布太麻烦不想手写 的情况下如何获取场景中的重名物体呢? 批量获取对象 首先,既然没法确定路径,那就只能用暴力的方法了——直接获取场景中的全部对象。 使用这样的语句,可以获得场景中所有类型为 GameObject 的对

    2023年04月09日
    浏览(28)
  • Selenium - 如何进行多个窗口操作?

    扩展题: 在执行UI自动化时,如果找不到元素,分析有哪些原因? 答:1、元素定位代码是否正确 2、是否是匹配到唯一元素 3、是否有做元素等待 4、是否需要鼠标悬浮 5、元素是否在新窗口 6、元素是否在于iframe(框架 )标签中

    2024年02月11日
    浏览(41)
  • 数据处理(11):3Dmax中如何操作可以将多个对象实体合并成一个对象实体

    在使用3Dmax中,经常会有将多个对象拼接成一个完整的对象得需求,只是看每个人的解决方法是否一致了。但是如果是合并多个对象,推荐使用下面两种方法 通过使用附加功能合并对象 在3Dmax中,虽然分组工具可以将对象组合成一个整体,但是这种分组绑定是可以随时解开的

    2024年02月04日
    浏览(45)
  • 聊聊在集群环境中本地缓存如何进行同步

    之前有发过一篇文章聊聊如何利用redis实现多级缓存同步。有个读者就给我留言说,因为他项目的redis版本不是6.0+版本,因此他使用我文章介绍通过MQ来实现本地缓存同步,他的同步流程大概如下图 他原来的业务流程是每天凌晨开启定时器去爬取第三方的数据,并持久化到r

    2024年02月12日
    浏览(48)
  • SpringBoot如何使用MultipartFile进行文件上传保存到服务器本地

    之前一直都是用的别人封装好的文件上传方法,这次想自己写一个特别简单的,文件上传方法,非常适合新手观看… 首先需要Springboot需要有Web依赖,就是下面这个依赖 依赖导完了,下面就直接是代码,大家看一下 到这里文件上传的解释都在代码里面,下面如果报文件过大的报错还需

    2024年02月13日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包