C++多线程异步通讯机制总结
2019-08-04 15:53
1301 查看
#include <iostream> #include <future> #include <thread> using namespace std; using namespace std::this_thread; using namespace std::chrono; //费时操作 void work1(promise<int> &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<int> prom; future<int> f1 = prom.get_future();//使用get_future成员函数获取future thread(work1, ref(prom), 1, 2).detach(); f1.wait();//等待值设置 cout<<"计算结果:"<<f1.get()<<endl;//获取结果 //packaged_task包装一个操作 packaged_task<int(int, int)> task(work2); future<int> f2 = task.get_future();//使用get_future成员函数获取future thread(move(task), 11, 22).detach(); f2.wait();//等待结果 cout << "计算结果:" << f2.get() << endl;//获取结果 //async内部是一个线程 future<int> f3 = async(work3,111,222); f3.wait();//等待结果 cout << "计算结果:" << f3.get() << endl;//获取结果 }
相关文章推荐
- C#.net同步异步SOCKET通讯和多线程总结
- C#.net同步异步SOCKET通讯和多线程总结
- C#.net同步异步SOCKET通讯和多线程总结
- C#.net同步异步SOCKET通讯和多线程总结2
- Android多线程,异步消息处理机制, Thread, AsyncTask 简单总结
- C#.net同步异步SOCKET通讯和多线程总结(5)tcp发送和接受的代码
- C#.net同步异步SOCKET通讯和多线程总结
- C#.net同步异步SOCKET通讯和多线程总结
- 同步异步SOCKET通讯和多线程总结
- C++模板机制总结
- 网络传输之同步异步SOCKET通讯和多线程
- Java中关于同步,异步,多线程,多线程同步,并发,并行的一些总结
- 多线程间的通讯之等待唤醒机制
- C++多线程-第五篇-同步机制
- 引用内部函数绑定机制,R转义字符,C++引用,别名,模板元,宏,断言,C++多线程,C++智能指针
- 多线程间的通讯之等待唤醒机制
- C#实现异步编程的两个简单机制(异步委托&定时器)及Thread实现多线程
- QML与Qt C++ 交互机制探讨与总结
- QML与Qt C++ 交互机制探讨与总结
- android学习笔记之消息机制,异步和多线程(转)