C++多线程异步通讯机制总结

C++多线程异步通讯机制总结_第1张图片
C++多线程异步通讯机制总结_第2张图片
C++多线程异步通讯机制总结_第3张图片
C++多线程异步通讯机制总结_第4张图片
C++多线程异步通讯机制总结_第5张图片
C++多线程异步通讯机制总结_第6张图片

#include 
#include 
#include 
using namespace  std;
using namespace  std::this_thread;
using namespace  std::chrono;
 
//费时操作
void  work1(promise &prom, int  a, int b)
{
	cout << "work1开始计算:" << endl;
	sleep_for(seconds(3));
	prom.set_value(a+b);
}

int  work2( int  a, int b)
{
	cout << "work2开始计算:" << endl;
	sleep_for(seconds(2));
	return a + b;
}

int  work3(int  a, int b)
{
	cout << "work3开始计算:" << endl;
	sleep_for(seconds(2));
	return a + b;
}



int main()
{ 
	//promise内部包装了一个值
	promise  prom;
	future f1 = prom.get_future();//使用get_future成员函数获取future
	thread(work1, ref(prom), 1, 2).detach();
	f1.wait();//等待值设置
	cout<<"计算结果:"<  task(work2);
	future f2 = task.get_future();//使用get_future成员函数获取future
	thread(move(task), 11, 22).detach();
	f2.wait();//等待结果
	cout << "计算结果:" << f2.get() << endl;//获取结果


	//async内部是一个线程
	future f3 = async(work3,111,222);
	f3.wait();//等待结果
	cout << "计算结果:" << f3.get() << endl;//获取结果
}

你可能感兴趣的:(C++)