C++多线程编程(第四章 promise和future)

news2024/11/22 17:19:41

promise 和future

promise用于异步传输变量

std::promise提供存储异步通信的值,再通过其对象创建的std::future异步获得结果。
std::promise只能使用一次。void set_value(_Ty&& _Val)设置传递值,只能调用一次

std::future提供访问异步操作结果的机制

get()阻塞等待promise set_value的值

代码演示

/*
C++ 11
promise与future


*/

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

using namespace std;


void TestFuture(promise<string>p)
{
	this_thread::sleep_for(3s);
	cout << "Begin set value" << endl;
	p.set_value("TestFuture value");
	this_thread::sleep_for(3s);
	cout << "end TestFutrue" << endl;
}

int main()
{
	//异步传输变量存储
	promise<string>p;

	//用来获取线程异步值获取
	auto future = p.get_future();

	auto th = thread(TestFuture, move(p));
	cout << "begin future.get()" << endl;
	cout << "future_get() = " << future.get() << endl;
	cout << "end future.get()" << endl;
	th.join();

	//getchar();
	printf("All done!\n");
	return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/989945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新期权开户的形式有哪些?

期权目前都有哪些开户方式? 摘对于上证50etf期权的投资者来说,最关心的就是开户的问题了,而50etf期权开户方式目前主要有券商和平台开户两种,各有优缺点&#xff0c;下文介绍最新期权开户的形式有哪些&#xff1f; 一、最新的期权开户方式有多种&#xff0c;包括在线开户、手机…

自己的碎碎念集合

自己的碎碎念集合 2023-09-07 c叠加三目运算符闰年计算法2023-08-13 一个小题目 AB problem一、问题及解答关碍 总结 2023-07-26 C的2至36进制转换函数一、itoa()函数的示例代码总结 2023-07-19 平面坐标下判断三角形以及输出周长和面积一. 基本知识总结 2023-06-25 达芬奇去除…

认识伦敦银的真相,并没有那么容易

我们进行伦敦银投资&#xff0c;其实就是想利用一定的时间在这个市场中获取盈利。对于普通人来说&#xff0c;我们获得金钱的方法就是从事一份工作努力的&#xff0c;在这个职位中&#xff0c;做好自己的本职工作&#xff0c;最后老板为我们的辛勤付出&#xff0c;支付相应的工…

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像 项目介绍需要重点关注的几个文件构建cpu版本的docker构建gpu版本的docker&#xff08;cuda11.2cudnn8&#xff09; 阅读提示&#xff1a; &#xff08;1&#xff09;Paddle的Serving项目中&#xff0c;在t…

OpenCV 06(图像的基本变换)

一、图像的基本变换 1.1 图像的放大与缩小 - resize(src, dsize, dst, fx, fy, interpolation) - src: 要缩放的图片 - dsize: 缩放之后的图片大小, 元组和列表表示均可. - dst: 可选参数, 缩放之后的输出图片 - fx, fy: x轴和y轴的缩放比, 即宽度和高度的缩放比. - …

【React学习】React高级特性

1. 函数式组件和类组件区别 函数式组件 函数式组件是一种简单的组件定义方式&#xff0c;它是一个以JavaScript函数为基础的组件。 可以把函数式组件理解为纯函数&#xff0c;它的输入为props&#xff0c;输出为JSX。函数式组件没有状态&#xff0c;也没有生命周期。 functio…

java特殊文件 属性文件properties和XML文件

属性文件properties 后缀为.properties的文件&#xff0c;称之为属性文件&#xff0c;它可以很方便的存储一些类似于键值对的数据。经常当做软件的配置文件使用。 首先我们要掌握属性文件的格式&#xff1a; 1.属性文件后缀以.properties结尾 2.属性文件里面的每一行都是一个…

Python Opencv实践 - Shi-Tomasi角点检测

参考资料&#xff1a;Harris和Shi-tomasi角点检测笔记&#xff08;详细推导&#xff09;_harris焦点检测_亦枫Leonlew的博客-CSDN博客 cv.goodFeaturesToTrack&#xff1a;Shi-Tomasi角点检测-OpenCV-python_独憩的博客-CSDN博客 import cv2 as cv import numpy as np import …

精准定位,智慧港口:北斗技术在港口车辆智能监管中的应用

随着全球经济一体化的加速推进&#xff0c;港口作为全球物流网络中的关键节点、对外贸易货物的集散中心以及国际物流供应链的重要组成部分&#xff0c;其在区域经济发展中的作用变得越来越重要。然而&#xff0c;随着港口向大型化、专业化方向的发展&#xff0c;现有的基础设施…

基于Java+SpringBoot+UniApp的微信小程序朋友圈

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着社交媒体的兴起和…

在UE4虚幻引擎中加入导航网格体边界体积后丧尸不能移动和发现玩家

UE4系列文章目录 文章目录 UE4系列文章目录前言一、用到的知识点二、问题原因 前言 最近使用ue4做第一人称视角射击游戏发现问题&#xff0c;加入导航网格体边界体积后丧尸不能移动和发现玩家。下图是出现的问题图片 一、用到的知识点 1.行为树&#xff1a;控制并显示AI的决…

【后端面经-数据库】Redis数据结构和底层数据类型

【后端面经-数据库】Redis数据结构和底层数据类型 1. Redis数据类型1.1 基本数据类型1. string2. hash3. list4. set5. sortset/Zset 1.2 特殊数据类型1. bitmap2. hyperloglog3. GEO4. stream 2. Redis底层数据类型2.1 简介2.2 动态字符串SDS2.3 快表QuickList2.4 字典Dict2.5…

论文解读 | 基于中心的三维对象检测与跟踪

原创 | 文 BFT机器人 CenterPoint与传统基于框的3D物体检测器和跟踪器不同之处在于&#xff0c;它将3D物体表示、检测和跟踪为点&#xff0c;而不是使用边界框。这种方法具有几个优点&#xff0c;包括减少物体检测器的搜索空间&#xff0c;简化下游任务&#xff08;如跟踪&…

一键去除文件名中的空格,轻松解决文件命名烦恼!

你是否曾经为文件名中的空格而烦恼&#xff1f;这些空格可能会在传输、存储和搜索文件时带来各种问题。为了解决这个问题&#xff0c;本文将向你介绍几种实用的方法&#xff0c;让你轻松去除文件名中的空格&#xff0c;让文件命名变得更加简单&#xff01; 首先&#xff0c;我…

MAC终端美化

先看看效果&#xff1a; 1.安装on-my-zsh 打开终端&#xff0c;输出&#xff1a; sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"安装过程中如果出现了链接超时的错误&#xff0c;不要慌&#xff0c;就再来一次&#x…

牛客网——BM62 斐波那契数列

class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param n int整型 * return int整型*/int Fibonacci(int n) {// write code hereif(n0) //考虑第0项return 0;else if(n1||n2)return 1;else…

人大加拿大女王大学金融硕士项目——自律是实现目标和成功的桥梁

低级的欲望通过放纵就能得到&#xff0c;高级的欲望通过自律才能得到。在这个快速发展的时代&#xff0c;只有保持自律&#xff0c;不断的充实自己&#xff0c;提升自己&#xff0c;才不会被社会所淘汰。中国人民大学与加拿大女王大学金融硕士项目&#xff0c;汇集了金融业的精…

EPICS asyn诊断帮助

iocsh命令 asynReport(level,portName) asynInterposeFlushConfig(portName,addr,timeout) asynInterposeEosConfig(portName,addr,processIn,processOut) asynSetTraceMask(portName,addr,mask) asynSetTraceIOMask(portName,addr,mask) asynSetTraceInfoMask(portName,addr…

Greenplum执行SQL卡住的问题

问题 今天社区群里面一位同学反映他的SQL语句执行会hang住&#xff0c;执行截图如下。 分析 根据提示信息&#xff0c;判断可能是网络有问题&#xff0c;或者是跟GP使用UDP包有关系。 此同学找了网络检查的人确定网络没有问题&#xff0c;于是猜测跟UDP包有关。 参考文章ht…

合宙Air724UG LuatOS-Air LVGL API控件-窗口 (Window)

窗口 (Window) 分 享导出pdf 示例代码 win lvgl.win_create(lvgl.scr_act(), nil) lvgl.win_set_title(win, "Window title") -- close_btn lvgl.win_add_btn_right(win, "\xef\x80\x8d") -- --lvgl.obj_set_event_cb(cl…