本文主要介绍 std::packaged_task

std::packaged_task 包装一个可调用的对象,并且允许异步获取该可调用对象产生的结果,从包装可调用对象意义上来讲,std::packaged_task 与 std::function 类似,只不过 std::packaged_task 将其包装的可调用对象的执行结果传递给一个 std::future 对象(该对象通常在另外一个线程中获取 std::packaged_task 任务的执行结果)。

std::packaged_task 对象内部包含了两个最基本元素,一、被包装的任务(stored task),任务(task)是一个可调用的对象,如函数指针、成员函数指针或者函数对象,二、共享状态(shared state),用于保存任务的返回值,可以通过 std::future 对象来达到异步访问共享状态的效果。

可以通过 std::packged_task::get_future 来获取与共享状态相关联的 std::future 对象。在调用该函数之后,两个对象共享相同的共享状态,具体解释如下:

  1. std::packaged_task 对象是异步 Provider,它在某一时刻通过调用被包装的任务来设置共享状态的值。

  2. std::future 对象是一个异步返回对象,通过它可以获得共享状态的值,当然在必要的时候需要等待共享状态标志变为 ready

UNIX(多线程):18---异步任务提供者(Provider) 介绍(续)相关推荐

  1. UNIX(多线程):17---异步任务提供者(Provider) 介绍

    std::promise 类概述 Promise 对象可以保存某一类型 T 的值,该值可被 future 对象读取(可能在另外一个线程中),因此 promise 也提供了一种线程同步的手段.在 pro ...

  2. 【C++】多线程与异步编程【四】

    文章目录 [C++]多线程与异步编程[四] 0.三问 1.什么是异步编程? 1.1同步与异步 1.2 **阻塞与非阻塞** 2.如何使用异步编程 2.1 使用全局变量与条件变量传递结果 实例1: 2. ...

  3. Android开发系列——实战篇11:多线程与异步机制

    本文介绍安卓的多线程与异步任务处理的机制 目录 一.多线程 1.主线程与子线程 2.Handler用法详解 使用Handler发送post请求 使用Handler处理Message消息 一.多线程 1 ...

  4. python同步异步_python中Tornado的同步与异步I/O的介绍(附示例)

    本篇文章给大家带来的内容是关于python中Tornado的同步与异步I/O的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 协程是Tornado种推荐的编程方式,使用 ...

  5. python异步和多线程_Python 异步 IO(asyncio)、多进程、多线程性能对比

    IO 密集型应用 IO 密集型应用CPU等待IO时间远大于CPU 自身运行时间,太浪费:常见的 IO 密集型业务包括:浏览器交互.磁盘请求.网络爬虫.数据库请求等 image.png Python 世 ...

  6. CompletableFuture的多线程和异步监听实现

    大家好,我是烤鸭: 今天给大家说的是多线程并发的异步监听的情况. 这里不得不说一下CompletableFuture这个类,普通我们执行多线程的时候只需要另外启动一条线程. 说一下线程的3种方式: e ...

  7. android分开两个线程做事,android开发教程之handle实现多线程和异步处理

    这次浅谈一下Handler,为什么会出现Handler这个功能特性呢?首先,在之前的基本控件,基本都是在Activity的onCreate(Bundle savedInstanceState)方法中调 ...

  8. springboot主线程_SpringBoot(一) 多线程与异步

    多线程与异步 异步是目的,而多线程是实现这个目的的方法. 1 Java J.U.C线程调度 JDK 1.5新增的java.util.concurrent包,增加了并发编程的很多类. Executor ...

  9. Python高并发爬虫测评(2): 多进程, 多线程和异步协程哪个快?

    在Python爬虫下一代网络请求库httpx和parsel解析库测评一文中我们对比了requests的同步爬虫和httpx的异步协程爬虫爬取链家二手房信息所花的时间(如下所示:一共580条记录),结果 ...

最新文章

  1. UWP Windows10开发获取设备位置(经纬度)
  2. 深度学习最常用的10个激活函数!(数学原理+优缺点)
  3. docker-compose:使用docker-compose部署nginx+supervisor+uwsgi+flask程序(mongodb)
  4. python【数据结构与算法】完全背包(附代码)
  5. 学习前端html 设置样式
  6. svn 本地仓库使用
  7. 创业阶段如何找客户_初创企业在不同的创业阶段:如何做好市场营销?
  8. android 中的组合控件的设计
  9. ITK:笛卡尔方位角高程
  10. 洛谷 题解 P2312 【解方程】
  11. 杭州师范大学马云雕像被拆,校方回应!
  12. java this() super()_java中的this和super
  13. 杭电1863+1879
  14. matlab 自写 自适应中值滤波 matlab自适应中值滤波算法
  15. 音乐推荐系统协同过滤算法解释
  16. python实例练习(9)图像的手绘效果
  17. python求职意向怎么写_软件测试求职意向怎么写(附样本)最新精美简历模板
  18. 【C语言】写一个程序,输出一个在100到200之间的数字,这个单位的数字是6,可以除以3。
  19. 想深入学习计算机需要看哪些经典书籍?
  20. Windows搭建web站点:免费内网穿透发布至公网 1-2

热门文章

  1. 计算机在材料中的运用结课,计算机在材料科学工程中的应用的结课论文.doc
  2. mysql 人名用什么类型_如何选择合适的MySQL数据类型
  3. 怎么修改提交git是的用户名_Git 修改用户名以及提交邮箱
  4. DotNet进阶系列
  5. .NET平台下开源框架
  6. 一步步编写操作系统 38 一级页表与虚拟地址3
  7. 【Qt】解决GDAL直接读取数据到QImage导致图像歪斜的问题
  8. PWN-PRACTICE-CTFSHOW-8
  9. REVERSE-PRACTICE-CTFSHOW-5
  10. CCIE-LAB-第十篇-BGP-VPNV4+VNPN6+MPLS+关闭TTL