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

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

C++程序中啟動線程的方法

2020-05-23 14:18:38
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了C++程序中啟動線程的方法,作者針對C++11版本中的一些新特性進行了解說,需要的朋友可以參考下

C++11 引入一個全新的線程庫,包含啟動和管理線程的工具,提供了同步(互斥、鎖和原子變量)的方法,我將試圖為你介紹這個全新的線程庫。

如果你要編譯本文中的代碼,你至少需要一個支持 C++11 的編譯器,我使用的是 GCC 4.6.1,需要使用 -c++0x 或者 -c++11 參數來啟用 C++11 的支持。

啟動線程

在 C++11 中啟動一個線程是非常簡單的,你可以使用 std:thread 來創建一個線程實例,創建完會自動啟動,只需要給它傳遞一個要執行函數的指針即可,請看下面這個 Hello world 代碼:

 

 
  1. #include <thread> 
  2. #include <iostream> 
  3.  
  4. void hello(){ 
  5. std::cout << "Hello from thread " << std::endl; 
  6.  
  7. int main(){ 
  8. std::thread t1(hello); 
  9. t1.join(); 
  10.  
  11. return 0; 

所有跟線程相關的方法都在 thread 這個頭文件中定義,比較有意思的是我們在上面的代碼調用了 join() 函數,其目的是強迫主線程等待線程執行結束后才退出。如果你沒寫 join() 這行代碼,可能執行的結果是打印了 Hello from thread 和一個新行,也可能沒有新行。因為主線程可能在線程執行完畢之前就返回了。

線程標識

每個線程都有一個唯一的 ID 以識別不同的線程,std:thread 類有一個 get_id() 方法返回對應線程的唯一編號,你可以通過 std::this_thread 來訪問當前線程實例,下面的例子演示如何使用這個 id:

 

 
  1. #include <thread> 
  2. #include <iostream> 
  3. #include <vector> 
  4.  
  5. void hello(){ 
  6. std::cout << "Hello from thread " << std::this_thread::get_id() << std::endl; 
  7.  
  8. int main(){ 
  9. std::vector<std::thread> threads; 
  10.  
  11. for(int i = 0; i < 5; ++i){ 
  12. threads.push_back(std::thread(hello)); 
  13.  
  14. for(auto& thread : threads){ 
  15. thread.join(); 
  16.  
  17. return 0; 

依次啟動每個線程,然后把它們保存到一個 vector 容器中,程序執行結果是不可預測的,例如:

 

 
  1. Hello from thread 140276650997504 
  2. Hello from thread 140276667782912 
  3. Hello from thread 140276659390208 
  4. Hello from thread 140276642604800 
  5. Hello from thread 140276676175616 

也可能是:

 

 
  1. Hello from thread Hello from thread Hello from thread 139810974787328Hello from thread 139810983180032Hello from thread 
  2. 139810966394624 
  3. 139810991572736 
  4. 139810958001920 

或者其他結果,因為多個線程的執行是交錯的。你完全沒有辦法去控制線程的執行順序(否則那還要線程干嗎?)

當線程要執行的代碼就一點點,你沒必要專門為之創建一個函數,你可以使用 lambda 來定義要執行的代碼,因此第一個例子我們可以改寫為:

 

 
  1. #include <thread> 
  2. #include <iostream> 
  3. #include <vector> 
  4.  
  5. int main(){ 
  6. std::vector<std::thread> threads; 
  7.  
  8. for(int i = 0; i < 5; ++i){ 
  9. threads.push_back(std::thread([](){ 
  10. std::cout << "Hello from thread " << std::this_thread::get_id() << std::endl; 
  11. })); 
  12.  
  13. for(auto& thread : threads){ 
  14. thread.join(); 
  15.  
  16. return 0; 

在這里我們使用了一個 lambda 表達式替換函數指針,而結果是一樣的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品精品精品精品免费| 欧美激情一级欧美精品| 2025国产精品视频| 日韩在线观看免费高清| 在线看日韩欧美| 91高潮精品免费porn| 美女性感视频久久久| 亚洲乱码av中文一区二区| 日本免费一区二区三区视频观看| 亚洲欧美激情视频| 一本大道亚洲视频| 中文字幕成人精品久久不卡| 国产欧美精品在线播放| 日韩激情av在线免费观看| 欧美亚洲伦理www| 尤物精品国产第一福利三区| 国产91亚洲精品| 国产成人av在线播放| 影音先锋欧美在线资源| 久久在精品线影院精品国产| 欧美在线免费观看| 欧美成人免费小视频| 成人午夜黄色影院| 欧美高清性猛交| 亚洲三级黄色在线观看| 亚洲欧美在线免费| 欧美国产一区二区三区| 久久99精品久久久久久青青91| 日韩精品在线免费观看视频| 亚洲色图18p| 国产91|九色| 国产精品一区二区三区久久| 欧美丰满少妇xxxxx做受| 国产精品日韩精品| 亚洲欧美在线免费| 日韩欧美有码在线| 亚洲国产天堂久久综合网| 日韩欧美亚洲国产一区| 91精品国产777在线观看| 亚洲天堂av女优| 中文字幕一区二区三区电影| 亚洲视频网站在线观看| 欧美激情亚洲自拍| 亚洲欧美日韩精品久久亚洲区| 国产精品稀缺呦系列在线| 亚洲电影免费观看高清完整版在线观看| 亚洲女在线观看| 欧美精品久久久久久久免费观看| 亚洲最大福利网| 亚洲精品欧美一区二区三区| 国产精品大陆在线观看| 日本午夜人人精品| 国产欧美精品一区二区三区-老狼| 欧美与黑人午夜性猛交久久久| 国产精品久久久久久亚洲调教| 亚洲国产精品yw在线观看| 精品国产乱码久久久久久天美| 国产成人精品一区二区| 日韩美女激情视频| 福利一区视频在线观看| 亚洲a一级视频| 51久久精品夜色国产麻豆| 久久人人爽亚洲精品天堂| 日韩h在线观看| 中文字幕在线国产精品| 日本精品久久电影| 久久国产精品久久精品| 欧美午夜无遮挡| 国产精品久久久久久影视| 国产精品中文久久久久久久| 国产suv精品一区二区| 日韩在线观看你懂的| 7777kkkk成人观看| 中文字幕亚洲一区| 国产日韩欧美一二三区| 亚洲网址你懂得| 亚州精品天堂中文字幕| 亚洲国内精品在线| 国产精品视频网站| www.日韩视频| 91精品国产91久久久久久最新| 国产精品欧美亚洲777777| 久久天天躁狠狠躁夜夜av| 欧美日韩亚洲一区二区三区| 日韩av在线一区二区| 欧美日韩午夜剧场| 亚洲高清色综合| 欧美韩国理论所午夜片917电影| 亚洲黄色av网站| 日韩精品极品在线观看播放免费视频| 欧美日韩美女在线| 中文字幕国产日韩| 欧美猛交免费看| 4388成人网| 免费99精品国产自在在线| 日韩欧美在线一区| 一区二区日韩精品| 92福利视频午夜1000合集在线观看| 日韩国产欧美精品一区二区三区| 亚洲精品中文字幕有码专区| 日本久久久久久久久| 国产日韩在线观看av| 欧美最猛性xxxxx亚洲精品| 97热在线精品视频在线观看| 久久亚洲精品小早川怜子66| 国产成人鲁鲁免费视频a| 91久久精品久久国产性色也91| 国产精品视频内| 国产美女91呻吟求| 热久久这里只有精品| 久久久久亚洲精品成人网小说| 久久精品久久久久电影| 亚洲a一级视频| 色婷婷综合成人| 久久综合色影院| 亚洲丁香婷深爱综合| 中文字幕v亚洲ⅴv天堂| 国产玖玖精品视频| 成人动漫网站在线观看| 亚洲成年网站在线观看| 91午夜在线播放| 亚洲精品99久久久久中文字幕| 国产精品福利在线观看| 国产亚洲福利一区| 日韩国产在线播放| 国产美女高潮久久白浆| 日韩中文字幕视频在线观看| 91精品成人久久| 中文字幕国内精品| 欧美一区二区影院| 欧美视频免费在线观看| 亚洲一区中文字幕在线观看| 91久久精品美女| 91情侣偷在线精品国产| 国产欧美精品日韩精品| 国产成人精品亚洲精品| 精品成人乱色一区二区| 91在线视频精品| 91在线精品视频| 91精品久久久久久久久久另类| 欧美国产日韩一区二区三区| 日韩电影大全免费观看2023年上| 国产精品电影观看| 国产91网红主播在线观看| 久久久999精品视频| 欧美精品一本久久男人的天堂| 高清欧美性猛交xxxx| 欧美激情按摩在线| 国产精品va在线| 国产美女精品免费电影| 91干在线观看| 96pao国产成视频永久免费| 国产成人精品视频在线观看| 亚洲人成欧美中文字幕| 久久的精品视频| 国内精品久久久久| 欧美劲爆第一页| 亚洲精品国产精品国产自| 久久av在线播放| 亚洲伊人成综合成人网| 日本成熟性欧美| 51精品在线观看| 国产亚洲精品久久久久久777| 国产精品自产拍在线观看|