C++ async future deferred
std::async 是一个接受可调用对象作为模板参数的函数模板,并有可能异步执行它们
std::async返回一个std::future,他存储由std::async()执行的可调用对象的返回值
并使用future的成员函数get()得到
不同的启动策略导致不一样的结果
当std::async使用的第一个参数是launch::async时,创建一个新的线程异步执行
当std::async使用的第一个参数是launch::deferred时,创建一个延时任务,直到get()函数调用时才会开始这个任务
默认参数是launch::async | launch::deferred它可以异步运行或不运行,这取决于系统的负载,即系统资源不够创建一个新线程时,那么就创建一个同步任务
#include<iostream>
#include<functional>
#include <thread>
#include <chrono>
using namespace std;
#include <mutex>
std::mutex mlock;
std::condition_variable cond;#include <future>
int mythread() {std::cout << "my thread start,id = " << std::this_thread::get_id() << endl;this_thread::sleep_for(3s);std::cout << "my thread end,id = " << std::this_thread::get_id() << endl;return 5;
}
int main()
{//std::async 是一个接受可调用对象作为模板参数的函数模板,并有可能异步执行它们//std::async返回一个std::future<T>,他存储由std::async()执行的可调用对象的返回值//并使用future的成员函数get()得到std::cout << "main thread start,id = " << std::this_thread::get_id() << endl;std::future<int> result = std::async(mythread);//std::future<int> result = std::async(std::launch::async,mythread);//std::future<int> result = std::async(std::launch::deferred,mythread);this_thread::sleep_for(3s);int res = result.get();std::cout << "continue...." << std::endl;std::cout << res << std::endl;return 0;
}
//不同的启动策略导致不一样的结果
//当std::async使用的第一个参数是launch::async时,创建一个新的线程异步执行
//当std::async使用的第一个参数是launch::deferred时,创建一个延时任务,直到get()函数调用时才会开始这个任务
//默认参数是launch::async | launch::deferred它可以异步运行或不运行,这取决于系统的负载,即系统资源不够创建一个新线程时,那么就创建一个同步任务
C++ async future deferred相关推荐
- 高通宣布苹果_苹果当时宣布的一切都过得很顺利
高通宣布苹果 No iPhone 12, but Apple's virtual event featured the Apple Watch Series 6 and SE, two new iPa ...
- 苹果ipad如何横向_苹果iPad的阵容是一个完整的混乱
苹果ipad如何横向 In the last two months Apple has released three new iPads, first was the iPad Pro, which ...
- C++async、future、packaged_task、promise的使用
对线程又有了深刻的认识,以前写的线程基本都是同步线程,而自从学习了muduo网络库更知道要用异步的思想去处理问题,因为有时候同步是必须的,但有的时候同步会造成本不必要的浪费,所以也适当的用异步操作来代 ...
- std::future、std::promise、std::packaged_task、std::async
#include <iostream> #include <string> #include <future> #include <thread> #i ...
- C++11之std::async使用介绍
在C++11中有个async异步函数,其声明如下: template <class Fn, class... Args> future<typename result_of<F ...
- [C++] - C++11 多线程 - Future
整理转自:https://github.com/forhappy/Cplusplus-Concurrency-In-Practice/tree/master/zh/chapter6-Future Ta ...
- C++function,future,packaged_task
1.function和bind 这两个函数需要包含头文件#inlude<functional>. std::function是一种封装函数的工具或者说方法.std::function封装包 ...
- c++多线程学习11 packaged_task与async
一.packaged_task异步调用函数打包 普通的函数一调用立马获取返回值 packaged_task类的主要作用是把一个函数包装成一个对象,通过这个对象的访问的时候在函数的调用和返回值的获取可以 ...
- Flutter进阶篇(4)-- Flutter的Future异步详解一、认识Future二、创建多个Future的执行步骤三、then函数嵌套使用的执行步骤四、综合示例五、我们来看看Future的源码
https://cloud.tencent.com/developer/article/1375846 本文首发在公众号Flutter那些事,欢迎大家多多关注. 说明:本文中的所有函数的引用在main ...
最新文章
- linux cpu load 值,理解Linux系统中的load average(图文版)转
- Meaven的pom文件配置
- 插入脚注把脚注标注删掉_地狱司机不应该只是英国电影历史数据中的脚注,这说明了为什么...
- 前端学习(3122):react-hello-react总结state
- 前端学习(1171):includes方法
- c语言竞赛成绩排序,吧内编程竞赛:成绩公布
- 高效程序员常用的工具
- python string转int_Python int与string之间的转化
- Sonar+Hudson+Maven构建系列之三:安装Hudson
- “提速降费” 并非一蹴而就 矛头齐指运营商有失偏颇
- 每周荐书:京东架构、Linux内核、Python全栈
- .Net Framework3.5离线安装
- 斗鱼tv鸿蒙电视版,斗鱼直播鸿蒙版
- 批量一键删除QQ空间说说软件
- python图片转excel,Python代码,将图片转为了Excel
- samkoon触摸屏用什么软件编程_触摸屏如何编程_触摸屏编程用什么软件
- 生信-记一次NCBI-R语言-淋巴癌突变与未突变基因的差异分析
- python电影名称词云_python爬虫——词云分析最热门电影《后来的我们》
- cv2颜色空间(2)——交互式的颜色检测
- 低功耗广域网络和ISM频段:物联网的里程碑还是公地悲剧?
热门文章
- mysql 语句 面试题
- Linux进程管理四大工具ps \dstat\ top\ htop
- 灵魂画手教你浅拷贝与深拷贝
- 分辨率变化的数据from mydrivers 显卡评测
- 【简单详细】为Unity游戏制作开场动画video,新手必看
- Makefile的常见错误信息
- 声呐直线阵正交混频实验(HEU信息与信号处理创新实践项目一)
- 论文解读(GMI)《Graph Representation Learning via Graphical Mutual Information Maximization》
- MySQL数据库入门(十)多表复杂查询练习及讲解-下
- 实现调用阿里云API第二章——API调用实战(全球IP地址归属地查询)