LAMBDA表示式與執行緒及執行緒等待和獲取執行緒ID
阿新 • • 發佈:2019-02-13
本程式碼主要是使用LAMBDA表示式與執行緒的一起使用,還有執行緒的幾個方法的測試:
如:獲取執行緒的ID、執行緒等待,執行緒等待的幾種方法如下:
this_thread::sleep_for(chrono::seconds(3));//執行緒等待 3 秒
this_thread::yield();//讓CPU先執行其他執行緒,空閒時再執行些執行緒
this_thread::sleep_until();//到某個時刻到來之前一直等待,定時等待。
測試程式碼如下:
/* C++中建立多執行緒,建議使用LAMBDA表示式 下面幾個引數在 迅雷 的定時下載中都有體現 如空間下載、定時下載....... this_thread::sleep_for() //等待多少秒後執行。 this_thread::yield(); //CPU空閉了才執行行 this_thread::sleep_unitl(); //等到某個時間點時才執行 this_thread::get_id() //獲取執行緒ID */ #include<iostream> #include<thread> #include<chrono> #include<Windows.h> using namespace std; //執行緒等待與獲取執行緒 ID void main4C() { thread th1([](){ this_thread::sleep_for(chrono::seconds(3)); //執行緒等待 3 秒 //this_thread::yield(); //讓CPU先執行其他執行緒,空閒時再執行些執行緒 //this_thread::sleep_until(); //到某個時刻到來之前一直等待,定時等待。 cout << this_thread::get_id() << endl; //獲取執行緒的 ID }); thread th2([](){ this_thread::sleep_for(chrono::seconds(10)); //執行緒等待 10 秒 cout << this_thread::get_id() << endl; }); th1.join(); th2.join(); cin.get(); } void main4b() { thread th1([](){MessageBoxA(0, "1", "2", 0); }); thread th2([](){MessageBoxA(0, "1", "2", 0); }); th1.join(); th2.join(); cin.get(); } void main4a() { auto fun = [](){MessageBoxA(0, "1", "2", 0); }; thread th1(fun); thread th2(fun); th1.join(); th2.join(); cin.get(); }