C++語言層面多執行緒=>好處:跨平臺 windows/linux
thread/mutex/condition_variable
lock_gurad/unique_lock
atomic/原子型別,基于CAS操作的原子型別 執行緒安全的
睡眠sleep_for
C++ thread => windows 平臺用的createThread Linux用的pthread_create
簡單示例1
#include <iostream>
#include <thread>
using namespace std;
void threadHandler() {
//讓子執行緒睡眠2秒
std::this_thread::sleep_for(std::chrono::seconds(2));
cout << "hello threadHandler" << endl;
}
void threadHandler2(int x,int y) {
//讓子執行緒睡眠2秒
std::this_thread::sleep_for(std::chrono::seconds(2));
cout << "hello threadHandler2 (x+y)=" << (x+y) << endl;
}
int main() {
//創建一個執行緒物件,傳入一個執行緒函式,新執行緒就開始運行了
std::thread thread1(threadHandler);
//主執行緒等待子執行緒結束,主執行緒繼續向下運行
thread1.join();
//創建一個執行緒物件,傳入一個執行緒函式,新執行緒就開始運行了 ,傳遞引數
std::thread thread2(threadHandler2,100,200);
//主執行緒等待子執行緒結束,主執行緒繼續向下運行
thread2.join();
system("pause");
return 1;
}
簡單示例2
#include <iostream>
#include <thread>
using namespace std;
void threadHandler() {
//讓子執行緒睡眠2秒
std::this_thread::sleep_for(std::chrono::seconds(2));
cout << "hello threadHandler" << endl;
}
int main() {
//創建一個執行緒物件,傳入一個執行緒函式,新執行緒就開始運行了
std::thread thread1(threadHandler);
system("pause");
return 1;
}
簡單示例3
#include <iostream>
#include <thread>
using namespace std;
void threadHandler() {
//讓子執行緒睡眠2秒
std::this_thread::sleep_for(std::chrono::seconds(2));
cout << "hello threadHandler" << endl;
}
void threadHandler2() {
//讓子執行緒睡眠4秒
std::this_thread::sleep_for(std::chrono::seconds(4));
cout << "hello threadHandler2" << endl;
}
int main() {
//創建一個執行緒物件,傳入一個執行緒函式,新執行緒就開始運行了
std::thread thread1(threadHandler);
std::thread thread2(threadHandler);
//等待執行緒1,執行緒2結束
thread1.join();
thread2.join();
system("pause");
return 1;
}
小結:
一:怎么創建啟動一個執行緒
std::thread定義一個執行緒物件,傳入執行緒所需要的執行緒函式和引數,執行緒自動開啟
二:子執行緒如何結束
子執行緒函式運行完成,那么執行緒就結束了
三:主執行緒如何處理子執行緒
1:等待thread執行緒結束,當前執行緒繼續運行 thread.join();
2:設定thread執行緒為分離執行緒 thread.detach(); 主執行緒結束,整個行程結束,所有子執行緒都自動結束
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539758.html
標籤:其他
上一篇:每日演算法之把陣列排成最小的數
