C++11多线程------std::async
std::async
可以认为是封装了一个std::promise
,该函数返回一个std::future
,用于获取其他线程的数据。
该函数的本质是内部封装构造了一个线程,然后传递给一个std::promise
,之后返回一个对应的std::future
。如果不是线程池,而仅仅是异步调用,那么非常推荐使用该模式。
一般有两种模式:
std::lanch::async
:最常用的异步模式,每次都要执行一遍std::lanch::defer
:只在第一次调用的时候执行,之后再调用返回之前的调用结果。
给出代码示例:
#include <iostream>
#include <future>
#include <chrono>
#include <string>int int_async (int n) {printf ("begin int_async..\n");std::this_thread::sleep_for (std::chrono::seconds(n));printf ("int_async result is 100\n");return 100;
}std::string string_async (int n) {printf ("begin string_async..\n");std::this_thread::sleep_for (std::chrono::seconds(n));printf ("string_async result is \"success\"\n");return std::string ("success");
}int main() {std::future<int> fut1 = std::async (std::launch::async, &int_async, 2);std::future<std::string> fut2 = std::async (std::launch::async, &string_async, 1);std::cout << "I am waiting...\n";std::cout << fut1.get() << ", " << fut2.get() << std::endl;return 0;
}
运行结果:
C++11多线程------std::async相关推荐
- C++11之std::async使用介绍
在C++11中有个async异步函数,其声明如下: template <class Fn, class... Args> future<typename result_of<F ...
- C++多线程std::async、std::future、std::packaged_task、std::promise
std::async std::async用于创建异步任务,实际上就是创建一个线程执行相应任务,默认立即开始执行. std::async就是异步编程的高级封装,std::async的操作,其实相当于封 ...
- C++11中std::async的使用
C++11中的std::async是个模板函数.std::async异步调用函数,在某个时候以Args作为参数(可变长参数)调用Fn,无需等待Fn执行完成就可返回,返回结果是个std::future对 ...
- 用C++11的std::async代替线程的创建
转自:http://www.cnblogs.com/qicosmos/p/3534211.html c++11中增加了线程,使得我们可以非常方便的创建线程,它的基本用法是这样的: void f(int ...
- C++11多线程中std::call_once的使用
C++11中的std::call_once函数位于<mutex>头文件中. 在多线程编程中,有时某个任务只需要执行一次,此时可以用C++11中的std::call_once函数配合std: ...
- Multi-thread--C++11多线程中std::call_once的使用
C++11中的std::call_once函数位于<mutex>头文件中. 在多线程编程中,有时某个任务只需要执行一次,此时可以用C++11中的std::call_once函数配合std: ...
- C++11 多线程(std::thread)详解
注:此教程以 Visual Studio 2019 Version 16.10.3 (MSVC 19.29.30038.1) 为标准,大多数内容参照cplusplus.com里的解释 此文章允许转载, ...
- C++多线程:异步操作std::async和std::promise
文章目录 std::async 简介 使用案例 std::promise 简介 成员函数 总结 之前的文章中提到了C++多线程中的异步操作机制 C++ 多线程:future 异步访问类(线程之间安全便 ...
- c+++11并发编程语言,C++11并发编程:多线程std:thread
原标题:C++11并发编程:多线程std:thread 一:概述 C++11引入了thread类,大大降低了多线程使用的复杂度,原先使用多线程只能用系统的API,无法解决跨平台问题,一套代码平台移植, ...
最新文章
- OData Console in C4C and Gateway Client in CRM Fiori
- Wireshark 在Windows下的安装
- 中大计算机考研复试刷人太狠,中山大学考研复试被刷原因大盘点!
- sqlserver 2008安装总是弹出重启提示
- LeetCode 334. 递增的三元子序列
- 服务器被bash服务占满_用bash脚本自动下载ftp服务器文件
- php 查询 判断 语句,关于php的判断语句
- Oracle count函数原理,oracle count函数
- Web API 文档生成工具 apidoc
- Java中遍历Map集合的3种方式
- 详解相机的sensor工作原理
- 装Linux gpt还是mbr,装机、装系统必备:秒懂MBR和GPT分区表
- 物理光学3 电磁波的折射与反射
- 研究了四大计算机名校的培养方案,核心课程都在这了
- 波士顿法律第一至五季/全集Boston Legal迅雷下载
- 阿里云视频点播(java)
- iis php 500 内部服务器错误,服务器_iis的http 500内部服务器错误的解决,iis的http 500内部服务器错误是 - phpStudy...
- Failing OffsetCommit request since the consumer is not part of an active group
- 新建word文档,最上方页眉处总是自己出现一条横线,去除方法总结
- C语言进阶剖析 13 接续符和转义符
热门文章
- 嵌入不同源的页面_嵌入式技术课程教与学(教学大纲和试卷)
- 高阻态是0还是1_羽毛球拍穿线,先拉横线还是竖线?是否横线要比竖线高1到2磅?...
- Python爬虫之编辑cookie实例:必胜客餐厅
- pytorch学习笔记(十八):Use-Gpu
- 2019 蓝桥杯省赛 B 组模拟赛(一) J. 程序设计:蒜厂年会 环形连续子序列求和问题
- 目标检测——夏侯南溪模型搭建篇
- GAN——欧几里得空间
- NumPy中特别的数组函数 By Youki~
- libusb获取usb设备的idVendor(vid),idProduct(pid),以及Serial Number
- Python 标准库 —— string