1. 程式人生 > 其它 >C++基礎-多執行緒平行計算

C++基礎-多執行緒平行計算

為了獲得平行計算的結果,需要使用packaged_task對任務進行打包,使用pt1.get_future().get() 來獲取結果

全部程式碼

//
// Created by Administrator on 2021/6/27.
//
#include<thread>
#include<iostream>
#include<future> //執行緒將來結果
#include<chrono> //時間
#include <mutex>

using namespace std;

mutex g_m;

int main()
{
    auto run 
= [=](int index)->int{ //只讀 lock_guard<mutex> lckg(g_m); //加鎖 cout <<this_thread::get_id << " " << index << endl; //獲取執行緒id this_thread::sleep_for(chrono::seconds(10)); return index * 1024; }; packaged_task<int(int)> pt1(run); packaged_task
<int(int)> pt2(run); //建立兩個任務包 thread t1([&](){pt1(2);}); thread t2([&](){pt2(3);}); //開啟執行緒 cout << pt1.get_future().get() << endl; cout << pt2.get_future().get() << endl; //獲取結果 t1.join(); t2.join(); }