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相关推荐

  1. 高通宣布苹果_苹果当时宣布的一切都过得很顺利

    高通宣布苹果 No iPhone 12, but Apple's virtual event featured the Apple Watch Series 6 and SE, two new iPa ...

  2. 苹果ipad如何横向_苹果iPad的阵容是一个完整的混乱

    苹果ipad如何横向 In the last two months Apple has released three new iPads, first was the iPad Pro, which ...

  3. C++async、future、packaged_task、promise的使用

    对线程又有了深刻的认识,以前写的线程基本都是同步线程,而自从学习了muduo网络库更知道要用异步的思想去处理问题,因为有时候同步是必须的,但有的时候同步会造成本不必要的浪费,所以也适当的用异步操作来代 ...

  4. std::future、std::promise、std::packaged_task、std::async

    #include <iostream> #include <string> #include <future> #include <thread> #i ...

  5. C++11之std::async使用介绍

    在C++11中有个async异步函数,其声明如下: template <class Fn, class... Args> future<typename result_of<F ...

  6. [C++] - C++11 多线程 - Future

    整理转自:https://github.com/forhappy/Cplusplus-Concurrency-In-Practice/tree/master/zh/chapter6-Future Ta ...

  7. C++function,future,packaged_task

    1.function和bind 这两个函数需要包含头文件#inlude<functional>. std::function是一种封装函数的工具或者说方法.std::function封装包 ...

  8. c++多线程学习11 packaged_task与async

    一.packaged_task异步调用函数打包 普通的函数一调用立马获取返回值 packaged_task类的主要作用是把一个函数包装成一个对象,通过这个对象的访问的时候在函数的调用和返回值的获取可以 ...

  9. Flutter进阶篇(4)-- Flutter的Future异步详解一、认识Future二、创建多个Future的执行步骤三、then函数嵌套使用的执行步骤四、综合示例五、我们来看看Future的源码

    https://cloud.tencent.com/developer/article/1375846 本文首发在公众号Flutter那些事,欢迎大家多多关注. 说明:本文中的所有函数的引用在main ...

最新文章

  1. linux cpu load 值,理解Linux系统中的load average(图文版)转
  2. Meaven的pom文件配置
  3. 插入脚注把脚注标注删掉_地狱司机不应该只是英国电影历史数据中的脚注,这说明了为什么...
  4. 前端学习(3122):react-hello-react总结state
  5. 前端学习(1171):includes方法
  6. c语言竞赛成绩排序,吧内编程竞赛:成绩公布
  7. 高效程序员常用的工具
  8. python string转int_Python int与string之间的转化
  9. Sonar+Hudson+Maven构建系列之三:安装Hudson
  10. “提速降费” 并非一蹴而就 矛头齐指运营商有失偏颇
  11. 每周荐书:京东架构、Linux内核、Python全栈
  12. .Net Framework3.5离线安装
  13. 斗鱼tv鸿蒙电视版,斗鱼直播鸿蒙版
  14. 批量一键删除QQ空间说说软件
  15. python图片转excel,Python代码,将图片转为了Excel
  16. samkoon触摸屏用什么软件编程_触摸屏如何编程_触摸屏编程用什么软件
  17. 生信-记一次NCBI-R语言-淋巴癌突变与未突变基因的差异分析
  18. python电影名称词云_python爬虫——词云分析最热门电影《后来的我们》
  19. cv2颜色空间(2)——交互式的颜色检测
  20. 低功耗广域网络和ISM频段:物联网的里程碑还是公地悲剧?

热门文章

  1. mysql 语句 面试题
  2. Linux进程管理四大工具ps \dstat\ top\ htop
  3. 灵魂画手教你浅拷贝与深拷贝
  4. 分辨率变化的数据from mydrivers 显卡评测
  5. 【简单详细】为Unity游戏制作开场动画video,新手必看
  6. Makefile的常见错误信息
  7. 声呐直线阵正交混频实验(HEU信息与信号处理创新实践项目一)
  8. 论文解读(GMI)《Graph Representation Learning via Graphical Mutual Information Maximization》
  9. MySQL数据库入门(十)多表复杂查询练习及讲解-下
  10. 实现调用阿里云API第二章——API调用实战(全球IP地址归属地查询)