C++中的線程可以通過使用std::thread類來創建和管理。下面是一個簡單的示例代碼,展示了如何在C++中使用線程:
#include <iostream>
#include <thread>
// 線程函數
void threadFunction() {
std::cout << "Hello from thread!" << std::endl;
}
int main() {
// 創建線程對象并傳入線程函數
std::thread myThread(threadFunction);
// 主線程繼續執行
std::cout << "Hello from main thread!" << std::endl;
// 等待線程執行完畢
myThread.join();
return 0;
}
在上面的代碼中,我們創建了一個名為myThread
的線程對象,并將threadFunction
作為線程函數傳遞給它。然后,主線程繼續執行,在執行完std::cout
語句后,通過調用myThread.join()
等待線程執行完畢。
此外,還可以傳遞參數給線程函數:
#include <iostream>
#include <thread>
// 線程函數
void threadFunction(int n) {
std::cout << "Hello from thread! Number: " << n << std::endl;
}
int main() {
int numThreads = 5;
std::thread threads[numThreads];
// 創建多個線程對象,并傳入線程函數和參數
for (int i = 0; i < numThreads; i++) {
threads[i] = std::thread(threadFunction, i);
}
// 主線程繼續執行
std::cout << "Hello from main thread!" << std::endl;
// 等待所有線程執行完畢
for (int i = 0; i < numThreads; i++) {
threads[i].join();
}
return 0;
}
在這個示例中,我們創建了一個包含5個線程對象的數組,并通過循環在每個線程對象上調用std::thread
構造函數來創建線程。每個線程對象都傳遞了不同的參數給線程函數threadFunction
。
需要注意的是,在使用線程時需要小心處理共享資源的訪問,以避免競態條件和數據競爭的問題。可以使用互斥量(std::mutex)來對共享資源進行同步訪問,或者使用其他線程安全的容器和工具。