1. 程式人生 > 其它 >C++多執行緒3

C++多執行緒3

這裡,只是記錄自己的學習筆記。

順便和大家分享多執行緒的基礎知識。然後從入門到實戰。有程式碼。

知識點來源:

https://edu.51cto.com/course/26869.html


C++11 執行緒建立的多種方式和引數傳遞

 1 #include <iostream>
 2 #include <thread>
 3 #include<string>
 4 using namespace std;
 5 // Linx  -lpthread
 6 
 7 
 8 class Para {
 9 public:
10     Para() { cout << "
Create Para " << endl; } 11 Para(const Para& pa) { 12 cout << "copy Para" << endl; 13 } 14 ~Para() { cout << "Drop Para" << endl; } 15 string name; 16 }; 17 18 19 //呼叫回撥函式的時候,會再訪問一次。。。這裡又進行了一次 拷貝構造 20 void ThreadMian(int p1, float p2, string
str , Para pa) { 21 this_thread::sleep_for(1000ms); 22 cout << "ThreadMian p1:" << p1 << ",p2:" << p2 << ",str:" << str <<",pa:"<<pa.name<< endl; 23 } 24 25 int main(int argc,char* argv[]) { 26 27 // th 在建立的時候,對所有傳入的引數都做了一次拷貝 28 //float f1 = 12.1f;
29 //thread th(ThreadMian, 103, f1, "test string para"); 30 //th.join(); 31 32 thread th; 33 { 34 float f1 = 12.1f; 35 Para pa; //// 建立物件,會預設構造一個物件。。。 36 pa.name = "test Para classs"; 37 38 39 //所有的引數做複製 40 th = thread(ThreadMian, 1001, f1, "test para2",pa);//pa傳遞進去之後,thread的建構函式會把引數存一次,這裡會進行一次拷貝構造。 41 42 //類 Para 析構了3次。是走的拷貝建構函式。。 43 } 44 45 th.join(); 46 47 return 0; 48 }

總結:
th(執行緒物件) 在建立的時候,對所有傳入的引數都做了一次拷貝

 

 

作者:小烏龜 出處:http://www.cnblogs.com/music-liang/ 【轉載請註明出處,歡迎轉載】 希望這篇文章能幫到你