亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++11并發編程:多線程std::thread

2020-05-23 13:23:40
字體:
來源:轉載
供稿:網友

一:概述

C++11引入了thread類,大大降低了多線程使用的復雜度,原先使用多線程只能用系統的API,無法解決跨平臺問題,一套代碼平臺移植,對應多線程代碼也必須要修改。現在在C++11中只需使用語言層面的thread可以解決這個問題。

所需頭文件<thread>

二:構造函數

1.默認構造函數

  • thread() noexcept
  • 一個空的std::thread執行對象

2.初始化構造函數

template<class Fn, class... Args>

explicit thread(Fn&& fn, Args&&... args);

創建std::thread執行對象,線程調用threadFun函數,函數參數為args。

void threadFun(int a){  cout << "this is thread fun !" << endl;}thread t1(threadFun, 2);

3.拷貝構造函數

thread(const thread&) = delete;

拷貝構造函數被禁用,std::thread對象不可拷貝構造

void threadFun(int& a){  cout << "this is thread fun !" << endl;}  int value = 2;thread t1(threadFun, std::ref(value));

4.Move構造函數

thread(thread&& x)noexcept

調用成功原來x不再是std::thread對象

void threadFun(int& a){  cout << "this is thread fun !" << endl;} int value = 2;thread t1(threadFun, std::ref(value));thread t2(std::move(t1));t2.join();

三:成員函數

1.get_id()

獲取線程ID,返回類型std::thread::id對象。

thread t1(threadFun);thread::id threadId = t1.get_id();cout << "線程ID:" << threadId << endl;//threadId轉換成整形值,所需頭文件<sstream>ostringstream  oss;oss << t1.get_id();string strId = oss.str();unsigned long long tid = stoull(strId);cout << "線程ID:" << tid << endl;

2.join()

創建線程執行線程函數,調用該函數會阻塞當前線程,直到線程執行完join才返回。

thread t1(threadFun);t1.join() //阻塞等待

3.detach()

detach調用之后,目標線程就成為了守護線程,駐留后臺運行,與之關聯的std::thread對象失去對目標線程的關聯,無法再通過std::thread對象取得該線程的控制權。

4.swap()

交換兩個線程對象

thread t1(threadFun1);thread t2(threadFun2);cout << "線程1的ID:" << t1.get_id() << endl;cout << "線程2的ID:" << t2.get_id() << endl;t1.swap(t2);cout << "線程1的ID:" << t1.get_id() << endl;cout << "線程2的ID:" << t2.get_id() << endl;

5.hardware_concurrency()

獲得邏輯處理器儲量,返回值為int型

int coreNum = thread::hardware_concurrency();

四:使用

1.創建線程

void threadFun1(){  cout << "this is thread fun1 !" << endl;}int main(){  thread t1(threadFun1);  t1.join();  getchar();  return 1;}

2.創建線程,傳參

void threadFun1(int v){  cout << "this is thread fun1 !" << endl;  cout << v << endl;}int main(){  int value = 6;  thread t1(threadFun1, value);  t1.join();  getchar();  return 1;}

需要注意,變量int value 和int v 做變量傳遞時并不是引用,而是對變量做了拷貝,所以在傳遞給int v前,int value不能出作用域(釋放了內存),join(),可以保證int value變量釋放內存,如果使用detach(),可能存在這種情況。

3.創建線程,引用傳參

void threadFun1(int& v){  cout << "this is thread fun1 !" << endl;  cout << v << endl;}int main(){  int value = 6;  thread t1(threadFun1, std::ref(value));  t1.join();  getchar();  return 1;}

4.創建建線程,線程函數為類成員函數

class Object{public:  Object()  {    cout << "構造函數" << endl;  }  ~Object()  {    cout << "析構函數" << endl;  }  void fun(string info)  {    cout << info << endl;  }};int main(){  Object obj;  string str = "我是一個類的成員函數!";  thread t1(&Object::fun, &obj, str);  t1.join();  getchar();  return 1;}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女在线看| 亚洲女人天堂av| 在线视频日韩精品| 色综合色综合久久综合频道88| 日韩av电影中文字幕| 国产成人精品日本亚洲| 国产精品成人aaaaa网站| 色午夜这里只有精品| 国产精品久久久久久亚洲调教| 亚洲天堂av在线免费观看| 日韩在线视频国产| 国产一区二区成人| 精品久久久在线观看| 欧美视频精品一区| 欧洲s码亚洲m码精品一区| 隔壁老王国产在线精品| 欧美www在线| 久久激情五月丁香伊人| 2020欧美日韩在线视频| 日韩精品久久久久久福利| 夜夜嗨av一区二区三区四区| 久久91精品国产| 亚洲最大的网站| 国产丝袜一区二区| 日本视频久久久| 精品调教chinesegay| 国产欧美日韩丝袜精品一区| 亚洲免费电影在线观看| 亚洲一区二区三区视频播放| 国产ts一区二区| 午夜精品久久久久久久久久久久| 555www成人网| 91精品综合久久久久久五月天| 97精品视频在线观看| 久久中文字幕在线视频| 久久国产精品99国产精| …久久精品99久久香蕉国产| 亚洲一区二区三区视频| 日韩欧美在线播放| 久久久爽爽爽美女图片| 亚洲xxxxx性| 91美女片黄在线观| 久久久久久久久综合| 国产综合久久久久| 久久久精品国产亚洲| 欧美性xxxxhd| 亚洲人成在线免费观看| 国产精品扒开腿做爽爽爽视频| 2021国产精品视频| 国产成人亚洲综合青青| 亚洲高清久久网| 国产成人涩涩涩视频在线观看| 亚洲人成网在线播放| 欧美在线视频在线播放完整版免费观看| 国产精品午夜国产小视频| 国产日韩精品在线播放| 欧美激情精品久久久久久免费印度| 久久99青青精品免费观看| 中文字幕亚洲无线码在线一区| 欧美香蕉大胸在线视频观看| 777777777亚洲妇女| 国产亚洲aⅴaaaaaa毛片| 一区二区三区动漫| 欧美日韩亚洲91| 亚洲欧美精品中文字幕在线| 亚洲精美色品网站| 久久精品国产电影| 欧美色视频日本高清在线观看| 国产精品户外野外| 欧美美女操人视频| 久久av红桃一区二区小说| 日韩精品在线第一页| 国产精品影片在线观看| 亚洲精品电影在线| 91人人爽人人爽人人精88v| 欧美高清自拍一区| 欧美亚洲免费电影| 成人久久久久爱| 欧美高清理论片| 国产精品久久久久91| 91精品国产777在线观看| 亚洲美女www午夜| 欧美激情视频一区| www.美女亚洲精品| 超碰日本道色综合久久综合| 国产欧美亚洲视频| 成人精品视频99在线观看免费| 精品欧美激情精品一区| 北条麻妃在线一区二区| 欧美激情精品在线| 国产精品久久在线观看| 国产精品色婷婷视频| 日韩免费不卡av| 日韩精品在线视频美女| 78m国产成人精品视频| 97视频在线观看免费高清完整版在线观看| 欧美精品videosex性欧美| 亚洲毛片一区二区| 91亚洲精品在线观看| 精品女厕一区二区三区| 国产精品视频自拍| 亚洲最大av网| 成人欧美一区二区三区黑人孕妇| 美日韩在线视频| 欧美亚洲国产视频小说| 欧美日韩另类视频| 69av成年福利视频| 国产91|九色| 久久国产天堂福利天堂| 欧美成人精品一区二区三区| 亚洲精品日韩丝袜精品| 亚洲国产精品国自产拍av秋霞| 国产精品jizz在线观看麻豆| 精品国内自产拍在线观看| 国产精品亚洲аv天堂网| 91国语精品自产拍在线观看性色| 蜜月aⅴ免费一区二区三区| 欧美精品18videos性欧美| 国内精品免费午夜毛片| 国产在线999| 在线播放日韩精品| 国产一区二区av| 伊人伊成久久人综合网小说| 欧美一级视频免费在线观看| 日韩精品视频中文在线观看| 国产精品久久久久999| 亚洲女人天堂色在线7777| 91tv亚洲精品香蕉国产一区7ujn| 中文字幕国产亚洲| 亚洲黄页网在线观看| 国产成人在线视频| 精品无人区太爽高潮在线播放| 97在线免费视频| 欧美在线视频观看免费网站| 97在线观看视频国产| 国产日韩精品入口| 亚洲成av人影院在线观看| 在线电影中文日韩| 国产精品露脸av在线| 欧美视频免费在线观看| 亚洲国产一区二区三区四区| 欧美性理论片在线观看片免费| 国外色69视频在线观看| 91爱视频在线| 国产精品夫妻激情| 91九色综合久久| 亚洲人成在线电影| 国产欧美日韩免费看aⅴ视频| 国产精品美女无圣光视频| 国产综合在线观看视频| 日韩在线国产精品| 久久精品视频在线播放| 日韩av网站电影| 51午夜精品视频| 91国内在线视频| 亚洲综合中文字幕68页| 欧美大片免费观看在线观看网站推荐| 4438全国亚洲精品在线观看视频| 国产亚洲精品美女久久久| 欧美性猛交xxxx免费看| 国产一区二区在线免费| 日韩有码在线观看| 综合av色偷偷网| 欧美激情精品久久久久久蜜臀|