packaged_task是个类模板,用于打包任务,把任务包装起来。它的模板参数是各种调用对象,通过std::packaged_task来把各种可调用对象包装起来,方便将来作为线程入口函数来调用。下面是一个例子:

int  test(int x)
{cout << "Child threadID:" << std::this_thread::get_id() << endl;cout << "X:" << x << endl;x += 100;std::this_thread::sleep_for(std::chrono::milliseconds(5000));return x;
}void main()
{A a;cout << "main threadID:" << std::this_thread::get_id() << endl;std::packaged_task<int(int)> mypack(test);std::thread t(std::ref(mypack), 10);t.detach();std::future<int> fu = mypack.get_future();cout << fu.get() << endl;//阻塞5秒(严格来说小于5秒)system("pause");
}

结果:

会在fu.get()阻塞5秒(严格来说小于5秒)

也可以将packaged_task对象装进一个容器中,比如vector

c++多线程之packaged_task相关推荐

  1. c++11多线程之packaged_task<>介绍与实例

    本节讨论c++11中std::packaged_task的特性与使用方法 std::packaged_task<> std::packaged_task<>是一个类模板,代表一 ...

  2. Android多线程之ArrayBlockingQueue源码解析

    阻塞队列系列 Android多线程之LinkedBlockingQueue源码解析 Android多线程之SynchronousQueue源码解析 Andorid多线程之DelayQueue源码分析 ...

  3. Asp.Net Core 轻松学-多线程之Task快速上手

    Asp.Net Core 轻松学-多线程之Task快速上手 原文:Asp.Net Core 轻松学-多线程之Task快速上手 前言     Task是从 .NET Framework 4 开始引入的一 ...

  4. JAVA多线程之wait/notify

    本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait ...

  5. linux 线程pthread_detach,linux线程之pthread_join和pthread_detach

    在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached).一个可结合的线程能够被其他线程收回其资源和杀死.在 被其他线程回收之前,它的存储器资源(例如栈)是不释放的.相反 ...

  6. Java多线程之Callable、Future和FutureTask

    Java多线程之Callable接口 自己想总结一下的,看到一篇总结的更好的博客,就转载了,突然感觉真轻松,哈哈哈哈 文章转载于:Matrix海子:Java并发编程:Callable.Future和F ...

  7. Java多线程之Synchronized和Lock的区别

    Java多线程之Synchronized和Lock的区别 目录: 原始构成 使用方法 等待是否可以中断 加锁是否公平 锁绑定多个条件Condition 小结:Lock相比较Synchronized的优 ...

  8. Java多线程之CAS缺点

    Java多线程之CAS缺点 目录: 循环时间开销很大 只能保证一个共享变量的原子操作 引来ABA问题及解决方案(重点) 1. 循环时间开销很大 通过看源码,我们发现有个do while,如果CAS失败 ...

  9. Java多线程之CAS深入解析

    Java多线程之CAS深入解析 目录: CAS是什么 CAS底层原理Unsafe深入解析 CAS缺点 引子:蚂蚁花呗一面:讲一讲AtomicInteger,为什么要用CAS而不是synchronize ...

最新文章

  1. python搞笑代码-【转】 Python 程序员的进化--搞笑版
  2. 学习笔记Kafka(七)—— Kafka 与Spark集成 —— 原理介绍与开发环境配置、实战
  3. python的subprocess模块执行shell命令
  4. C++编程积累——C++实现十进制与十六进制之间的互相转换
  5. 深入理解 Android Activity的生命周期
  6. Spring Boot基础学习笔记08:Spring Boot整合Redis
  7. java-记录一个子串在整串中出现的次数
  8. CentOs7.3 搭建 Solr单机服务
  9. Android报错:IllegalStateException: The specified child already has a parent问题解决办法
  10. SQL:postgresql中COALESCE函数
  11. java二进制的相关知识_java二进制运算基础知识点详解
  12. Java项目:淘淘商城
  13. Axure8.0的注册码
  14. codeforces 1328 B. K-th Beautiful String
  15. 利用Exchange服务同步iOS和android中的联系人
  16. dcos - docker的日志收集
  17. 什么错误是计算机检查不出来的,如何在Windows 10中修复计算机检查异常BSOD | MOS86...
  18. byval 和byref的区别,今天刚明白。
  19. 我理解的企业技术管理(三)——如何做好技术管理
  20. 地表水水质监测数据/已去重/含坐标

热门文章

  1. wordpress网站单页模板主题开发制作
  2. 阿里IOT 应用托管部署 (2020/12/02)
  3. 一文读懂 Java 反射机制那些事
  4. Spring Cloud Eureka 配置文件说明
  5. leet70:爬楼梯
  6. uniapp 跳转公众号获其他小程序
  7. 2019-11-29-Mastering_bitcoin
  8. USACO--3.2Feed Ratios
  9. 微信小程序实现星星评分-整颗星星评分、半颗星星评分、任意颗星星展示
  10. fleck 客户端_Fleck - 又一个灵感之源 #iPhone