c++多线程之packaged_task
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相关推荐
- c++11多线程之packaged_task<>介绍与实例
本节讨论c++11中std::packaged_task的特性与使用方法 std::packaged_task<> std::packaged_task<>是一个类模板,代表一 ...
- Android多线程之ArrayBlockingQueue源码解析
阻塞队列系列 Android多线程之LinkedBlockingQueue源码解析 Android多线程之SynchronousQueue源码解析 Andorid多线程之DelayQueue源码分析 ...
- Asp.Net Core 轻松学-多线程之Task快速上手
Asp.Net Core 轻松学-多线程之Task快速上手 原文:Asp.Net Core 轻松学-多线程之Task快速上手 前言 Task是从 .NET Framework 4 开始引入的一 ...
- JAVA多线程之wait/notify
本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait ...
- linux 线程pthread_detach,linux线程之pthread_join和pthread_detach
在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached).一个可结合的线程能够被其他线程收回其资源和杀死.在 被其他线程回收之前,它的存储器资源(例如栈)是不释放的.相反 ...
- Java多线程之Callable、Future和FutureTask
Java多线程之Callable接口 自己想总结一下的,看到一篇总结的更好的博客,就转载了,突然感觉真轻松,哈哈哈哈 文章转载于:Matrix海子:Java并发编程:Callable.Future和F ...
- Java多线程之Synchronized和Lock的区别
Java多线程之Synchronized和Lock的区别 目录: 原始构成 使用方法 等待是否可以中断 加锁是否公平 锁绑定多个条件Condition 小结:Lock相比较Synchronized的优 ...
- Java多线程之CAS缺点
Java多线程之CAS缺点 目录: 循环时间开销很大 只能保证一个共享变量的原子操作 引来ABA问题及解决方案(重点) 1. 循环时间开销很大 通过看源码,我们发现有个do while,如果CAS失败 ...
- Java多线程之CAS深入解析
Java多线程之CAS深入解析 目录: CAS是什么 CAS底层原理Unsafe深入解析 CAS缺点 引子:蚂蚁花呗一面:讲一讲AtomicInteger,为什么要用CAS而不是synchronize ...
最新文章
- python搞笑代码-【转】 Python 程序员的进化--搞笑版
- 学习笔记Kafka(七)—— Kafka 与Spark集成 —— 原理介绍与开发环境配置、实战
- python的subprocess模块执行shell命令
- C++编程积累——C++实现十进制与十六进制之间的互相转换
- 深入理解 Android Activity的生命周期
- Spring Boot基础学习笔记08:Spring Boot整合Redis
- java-记录一个子串在整串中出现的次数
- CentOs7.3 搭建 Solr单机服务
- Android报错:IllegalStateException: The specified child already has a parent问题解决办法
- SQL:postgresql中COALESCE函数
- java二进制的相关知识_java二进制运算基础知识点详解
- Java项目:淘淘商城
- Axure8.0的注册码
- codeforces 1328 B. K-th Beautiful String
- 利用Exchange服务同步iOS和android中的联系人
- dcos - docker的日志收集
- 什么错误是计算机检查不出来的,如何在Windows 10中修复计算机检查异常BSOD | MOS86...
- byval 和byref的区别,今天刚明白。
- 我理解的企业技术管理(三)——如何做好技术管理
- 地表水水质监测数据/已去重/含坐标