C++ 多线程异步(std::promise)

一 简介

在构造std::promise对象时,该对象与新的共享状态(shared state)关联。通过调用std::promise的get_future函数,可以将该共享状态与std::future对象关联。调用之后,两个对象共享相同的共享状态,一旦由std::promise对象设置,std::future将会对其赋值。

  1. std::promise对象是异步提供程序(asynchronous provider),应 在某个时刻为共享状态设置一个值。
  2. std::future对象是个异步返回对象,可以检索共享状态的值,并在必要时等待其准备就绪。

二 例子

方法
get_future() 返回一个与promise对象的共享状态关联的std::future对象
set_value() 将值存储进共享状态即设置共享状态的值,准备就绪

void show(std::promise<int>* pProm)
{
	std::cout << "showThread" << std::endl;
	pProm->set_value(35);//此处不设置值将会一直阻塞
}

int main()
{
	std::promise<int> promiseInt;
	std::future<int> futureInt = promiseInt.get_future();//promise创建future 用来读取
	std::thread th(show, &promiseInt);
	std::cout << futureInt.get() << std::endl;
	th.join();

	return 0;
}

结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值