国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C++多線程編程之創(chuàng)建線程篇

開發(fā) 后端
多線程是程序員必須掌握的一門技術(shù),本文主要是針對于C++新標(biāo)準(zhǔn)中多線程庫,需要具備一定C++基礎(chǔ)方可學(xué)習(xí)。

[[383623]]

 多線程是程序員必須掌握的一門技術(shù),本文主要是針對于C++新標(biāo)準(zhǔn)中多線程庫,需要具備一定C++基礎(chǔ)方可學(xué)習(xí)。


前言

本章節(jié)主要C++多線程編程中的一些基本概念以及幾種創(chuàng)建線程的方式。

并發(fā)、進(jìn)程、線程的基本概念

并發(fā)兩個(gè)或者多個(gè)任務(wù)(獨(dú)立的活動(dòng))同時(shí)發(fā)生(進(jìn)行):一個(gè)程序通知執(zhí)行多個(gè)獨(dú)立的任務(wù)并發(fā)假象(不是真正的并發(fā)):單核CPU通過上下文切換方式實(shí)現(xiàn)進(jìn)程

進(jìn)程計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng)

進(jìn)程特性

  1. 動(dòng)態(tài)性:進(jìn)程是程序的一次執(zhí)行過程,是臨時(shí)的,有生命期,是動(dòng)態(tài)產(chǎn)生,動(dòng)態(tài)消亡的;
  2. 并發(fā)性:任何進(jìn)程都可以同其他進(jìn)行一起并發(fā)執(zhí)行;
  3. 獨(dú)立性:進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位;
  4. 結(jié)構(gòu)性:進(jìn)程由程序,數(shù)據(jù)和進(jìn)程控制塊三部分組成

線程每個(gè)進(jìn)程都有一個(gè)主線程并且主線程是唯一的,也就是一個(gè)進(jìn)程只能有一個(gè)主線程。vs編譯器中ctr+f5編譯運(yùn)行程序時(shí),實(shí)際是主線程調(diào)用mian函數(shù)中的代碼。線程可以理解為代碼執(zhí)行通道,除了主線程之外,可以自己創(chuàng)建其他線程。

并發(fā)實(shí)現(xiàn)方案

主要解決是進(jìn)程間通信問題

同一電腦上可通過管道,文件,消息隊(duì)列,共享內(nèi)存等方式實(shí)現(xiàn)

不同電腦可通過socket網(wǎng)絡(luò)通信實(shí)現(xiàn)

多個(gè)進(jìn)程實(shí)現(xiàn)并發(fā)

單獨(dú)進(jìn)程,多個(gè)線程實(shí)現(xiàn)并發(fā) 即一個(gè)主線程,多個(gè)子線程實(shí)現(xiàn)并發(fā)一個(gè)進(jìn)程中的所有線程共享內(nèi)存空間(共享內(nèi)存),例如全局變量,指針引用等,所以多線程開銷遠(yuǎn)遠(yuǎn)小于多進(jìn)程。共享內(nèi)存也會(huì)導(dǎo)致數(shù)據(jù)一致性問題(資源競爭問題)。

C++線程編程基本操作

1.首先需要包含thread頭文件

  1. #include <thread> 
  2. #include <iostream> 

2.創(chuàng)建線程: thread類創(chuàng)建一個(gè)線程

  1. #include <thread> 
  2. void print() 
  3.  std::cout<<"子線程"<<endl;     
  4. int main() 
  5.     //運(yùn)行程序會(huì)調(diào)用abort函數(shù)終止程序     
  6.     std::thread t1(print);    
  7.     std::cout<<"主線程"<<std::endl; 

 3.join:加入/匯合線程。阻塞主線程,等待子線程執(zhí)行結(jié)束,可理解為依附功能

  1. #include <thread> 
  2. void print() 
  3.  std::cout<<"子線程"<<endl;     
  4. int main() 
  5.     std::thread t1(print);    
  6.     t1.join();      //阻塞主線程,等待子線程執(zhí)行結(jié)束 
  7.     std::cout<<"主線程"<<std::endl; 
  8.     return 0; 

 4.detach:分離,剝離依附關(guān)系,駐留后臺

  1. #include <thread> 
  2. #include <iostream> 
  3. #include <windows.h> 
  4. void print()  
  5.  for (int i = 0; i < 10; i++)  
  6.  { 
  7.   std::cout << "子線程"<<i << std::endl; 
  8.  } 
  9. int main()  
  10.  std::thread t1(print); 
  11.  std::cout << "主線程" << std::endl; 
  12.     //可用Sleep延時(shí)實(shí)現(xiàn)結(jié)果演示 
  13.  t1.detach(); 
  14.  return 0; 

注意:一旦detach線程后,便不可再使用join線程。

5.joinable:判斷當(dāng)前線程是否可以join或deatch,如果可以返回true,不能返回false

  1. #include <thread> 
  2. #include <iostream> 
  3. void print()  
  4.  for (int i = 0; i < 10; i++)  
  5.  { 
  6.   std::cout << "子線程"<<i << std::endl; 
  7.  } 
  8. int main()  
  9.  std::thread t1(print); 
  10.  t1.detach(); 
  11.  if (t1.joinable())  
  12.  { 
  13.   t1.join(); 
  14.   std::cout << "可join" << std::endl; 
  15.  } 
  16.  std::cout << "主線程" << std::endl; 
  17.  return 0; 

其他創(chuàng)建線程方法

1.用類和對象

  1. #include <thread> 
  2. #include <iostream> 
  3. class Function  
  4. public
  5.  void operator()()  
  6.   std::cout << "子線程" << std::endl; 
  7.  } 
  8. }; 
  9. int main()  
  10.  Function object; 
  11.  std::thread t1(object);    //可調(diào)用對象即可 
  12.  t1.join(); 
  13.  std::thread t2((Function())); 
  14.  t2.join(); 
  15.  std::cout << "主線程" << std::endl; 
  16.  return 0; 

2.Lambda表達(dá)式

  1. #include <thread> 
  2. #include <iostream> 
  3. int main()  
  4.  
  5.  
  6.  std::thread t1([] {std::cout << "子線程" << std::endl; }); 
  7.  t1.join(); 
  8.  std::cout << "主線程" << std::endl; 
  9.  return 0; 

3.帶引用參數(shù)創(chuàng)建方式

  1. #include <thread> 
  2. #include <iostream> 
  3. #include <thread> 
  4. void printInfo(int& num)  
  5.  num = 1001; 
  6.  std::cout << "子進(jìn)程:"<<num << std::endl; 
  7. int main()  
  8.  int num = 0; 
  9.  //std::ref 用于包裝按引用傳遞的值。 
  10.  //std::cref 用于包裝按const引用傳遞的值 
  11.  //error C2672: “invoke”: 未找到匹配的重載函數(shù) 
  12.  std::thread t(printInfo, std::ref(num));     
  13.  t.join(); 
  14.  std::cout << "主線程:"<<num << std::endl; 
  15.  return 0; 

4.帶智能指針參數(shù)創(chuàng)建方式

  1. #include <thread> 
  2. #include <iostream> 
  3. #include <thread> 
  4. void printInfo(std::unique_ptr<int> ptr)  
  5.  std::cout << "子線程:"<<ptr.get() << std::endl; 
  6. int main()  
  7.  std::unique_ptr<int> ptr(new int(100)); 
  8.  std::cout << "主線程:" << ptr.get() << std::endl;   
  9.  std::thread t(printInfo,std::move(ptr));     
  10.  t.join(); 
  11.  std::cout << "主線程:"<<ptr.get() << std::endl;  //主線程:00000000 move掉了 
  12.  return 0; 

5.類的成員函數(shù)

  1. #include <thread> 
  2. #include <iostream> 
  3. #include <thread> 
  4. class MM  
  5. public
  6.  void print(int& num)  
  7.   num = 1001; 
  8.   std::cout << "子線程:"<<num << std::endl; 
  9.  } 
  10. }; 
  11. int main()  
  12.  MM mm; 
  13.  int num = 10; 
  14.  std::thread t(&MM::print,mm,std::ref(num));     
  15.  t.join(); 
  16.  std::cout << "主線程:"<< num << std::endl; 
  17.  return 0; 

好了,創(chuàng)建線程就介紹到這里,大家可以先練習(xí)一下,下章節(jié)講解共享數(shù)據(jù)訪問。

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2021-03-05 07:38:52

C++線程編程開發(fā)技術(shù)

2012-05-18 10:36:20

CC++編程

2021-12-14 08:28:08

Java多線程線程

2023-06-06 08:17:52

多線程編程Thread類

2021-12-26 18:22:30

Java線程多線程

2013-06-07 16:30:08

iOS多線程iOS開發(fā)NSThread

2013-07-16 13:39:11

2024-02-02 18:29:54

C++線程編程

2010-02-04 10:19:39

C++多線程

2010-01-18 14:09:58

C++多線程

2010-02-05 15:30:54

C++多線程測試

2010-01-21 11:25:44

linux多線程線程資源

2009-03-12 10:52:43

Java線程多線程

2013-07-16 10:12:14

iOS多線程多線程概念多線程入門

2009-06-17 11:23:00

Java多線程

2023-06-13 13:39:00

多線程異步編程

2011-06-22 16:08:40

Qt 多線程 事件循環(huán)

2023-06-16 08:36:25

多線程編程數(shù)據(jù)競爭

2021-12-28 09:10:55

Java線程狀態(tài)

2024-06-24 08:10:00

C++互斥鎖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

日本久久久精品视频| 久久香蕉综合色| 亚洲一区在线日韩在线深爱| 一本久道久久久| 久久伊人精品一区二区三区| 高清日韩av电影| 久久九九99视频| 久久99精品久久久久久三级| 玖玖玖免费嫩草在线影院一区| 精品福利视频一区二区三区| 中文字幕电影在线观看| 国产99久久久久久免费看农村| 亚洲xxxxx电影| 国产激情精品一区二区三区| 在线电影欧美成精品| 可以看美女隐私的网站| 成人美女在线观看| 蜜桃臀一区二区三区| 欧美日韩性在线观看| 色综合天天综合网国产成人网| 男人天堂亚洲天堂| 欧美日韩在线视频首页| 免费涩涩18网站入口| 日本欧美一区二区三区乱码| 91老司机在线| 国产亚洲精品美女久久| 国产性猛交xxxx免费看久久| 日本高清在线观看wwwww色| 亚洲精品菠萝久久久久久久| 国产自偷自偷免费一区| 成人看片黄a免费看在线| 亚洲一区二区三区涩| 免费在线成人| 精品国产乱码久久久久久久软件| 99精品美女| 国产精品国内视频| 伊人成综合网yiren22| 色在人av网站天堂精品| 成年永久一区二区三区免费视频| 亚洲人成网站999久久久综合| 污污视频在线| 欧美一区二区三区电影| 免费黄色在线网站| 欧美视频一区二区三区| 狠狠狠综合7777久夜色撩人| 欧美丝袜美女中出在线| 91欧美视频在线| 亚洲精品自在久久| 国内精品视频| 精品国产欧美一区二区| 三年片观看免费观看大全视频下载| av理论在线观看| 99久久伊人精品影院| 综合日韩av| 亚洲最新在线观看| 一级特黄特色的免费大片| 日韩美女精品在线| 男人天堂2020| 欧美日韩亚洲精品内裤| 四虎国产精品永远| 在线观看91av| 91精品xxx在线观看| 久久久久久中文| 国产精品视频一区二区三区四蜜臂| 国产日本欧美一区| 熟妇人妻va精品中文字幕| 激情小说亚洲一区| 国模叶桐国产精品一区| 性欧美在线看片a免费观看| 2019中文字幕在线| 阿v视频在线观看| 在线视频综合导航| 久久久久99精品成人片| 91天堂素人约啪| 日本高清不卡的在线| 欧美 日韩 国产一区二区在线视频| 丁香五月网久久综合| 亚洲一区二区电影| 91嫩草免费看| 亚洲网站啪啪| 欧亚精品在线观看| 国产区在线观看| 91豆麻精品91久久久久久| a视频在线看| 在线观看不卡视频| 成人在线爆射| 欧美丰满少妇xxxxx| 国产精品的网站| 国产亚洲视频在线| 国产精品久久久久久久久久辛辛| 久久久精品视频成人| 日韩av手机在线看| 国产精品福利在线| 日韩中文字幕一区二区高清99| 婷婷精品国产一区二区三区日韩| 大奶一区二区三区| 91久久久久久久久久久久久| 久久精品国产77777蜜臀| 国产成人久久777777| 色婷婷av一区二区三区之一色屋| 蜜桃视频www网站在线观看| 91成人在线视频| 日本 国产 欧美色综合| 综合网插菊花| 欧美成人一区二区三区在线观看 | 国产精品乱码久久久久久| 57pao成人永久免费| 久久免费精品| 国产精品夜间视频香蕉| 国产真实乱偷精品视频免| 成视频在线观看免费观看| 精品少妇一区二区| 国产成人一区| 97免费视频观看| 欧美视频在线一区二区三区 | 欧美精品tushy高清| 4438全国亚洲精品观看视频| 精品日本一区二区三区| 国产精品天干天干在观线| 9999在线视频| 91免费版网站入口| 国产精品天天看| 日韩中文视频| 久久综合伊人77777麻豆| 亚洲精品成人悠悠色影视| 亚洲日本在线观看视频| 亚洲在线免费观看| 最新中文字幕一区二区三区| 123成人网| 在线中文字幕一区| 亚洲一区视频在线观看视频| 极品少妇xxxx精品少妇| a天堂资源在线| 91av在线网站| 不卡视频一二三四| 波多野在线观看| 亚洲xxxx视频| 亚洲综合视频在线| av不卡一区| 一二三四视频社区在线| 欧美精品一区二区三区在线播放| 亚洲精品极品少妇16p| 成人在线看片网站| 久久99国产精品自在自在app| 国产乱理伦片在线观看夜一区 | 日韩激情av在线免费观看| 久久久久美女| 天天插天天狠天天透| 亚洲高清福利视频| 久久久91精品| 欧美不卡视频一区发布| 夜夜夜精品看看| 亚洲高清影院| 欧美国产视频一区| 亚洲激情在线观看视频免费| 日韩电影在线免费| 污污网站在线观看| 三级三级久久三级久久18| 欧美一激情一区二区三区| 国产精品久久久久久久免费软件| 欧美香蕉大胸在线视频观看 | 日本在线免费网| 国产精品十八以下禁看| 欧美成va人片在线观看| 日韩理论片在线| 555www成人网| 国产女同性恋一区二区| 成人污污视频| 中文字幕第88页| 欧美亚洲国产日韩2020| 亚洲丝袜美腿综合| 免费一区二区三区视频导航| 国产精品精华液网站| 99精品国产一区二区| 欧美高清视频一二三区| 免费在线成人| 欧美性理论片在线观看片免费| 六月丁香激情网| 欧美在线视频网| 欧美人与动xxxxz0oz| 国产精品18久久久久久久久久久久 | 国产片在线观看| 国产日韩综合一区二区性色av| 亚洲最新视频在线观看| av资源久久| 91这里只有精品| 一区二区三区免费看| 日韩av在线免费播放| av网站一区二区三区| 国产精品nxnn| 在线观看免费网站| 国产精品国色综合久久| 日韩精品中文字幕在线一区| 国产一区二区三区香蕉| 色狠狠一区二区三区| 日本一区二区三区电影| 精品综合久久| 日韩中文字幕亚洲| 亚洲欧洲在线观看av| 欧美精品1区|