35.并行计算获取结果

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <iostream>
 3 #include <thread> 
 4 #include <future>//线程将来的结果
 5 #include <chrono>
 6 #include <mutex>
 7 using namespace std;
 8 
 9 mutex g_m;
10 
11 
12 void main()
13 {
14     auto run = [=](int index) 
15     {
16         lock_guard<mutex> lckg(g_m);
17         //获取线程id以及参数
18         cout << this_thread::get_id << " " << index << endl;
19         //等待1秒
20         this_thread::sleep_for(chrono::seconds(1));
21         return index * 1024;//返回结果
22     };
23     //创建两任务包,用于初始化线程
24     packaged_task<int(int)> pt1(run);
25     packaged_task<int(int)> pt2(run);
26 
27     //开启线程
28     thread t1([&]() {pt1(2); });
29     thread t2([&]() {pt2(3); });
30     cout << pt1.get_future().get() << endl;
31     cout << pt2.get_future().get() << endl;
32     t1.join();
33     t2.join();
34     cin.get();
35 }

 

posted @ 2018-03-12 14:44  喵小喵~  阅读(167)  评论(0编辑  收藏  举报