c++ thread怎么使用

c++
小億
99
2023-09-14 22:50:43

C++中的線程可以通過(guò)使用std::thread類來(lái)創(chuàng)建和管理。下面是一個(gè)簡(jiǎn)單的示例代碼,展示了如何在C++中使用線程:

#include <iostream>
#include <thread>
// 線程函數(shù)
void threadFunction() {
std::cout << "Hello from thread!" << std::endl;
}
int main() {
// 創(chuàng)建線程對(duì)象并傳入線程函數(shù)
std::thread myThread(threadFunction);
// 主線程繼續(xù)執(zhí)行
std::cout << "Hello from main thread!" << std::endl;
// 等待線程執(zhí)行完畢
myThread.join();
return 0;
}

在上面的代碼中,我們創(chuàng)建了一個(gè)名為myThread的線程對(duì)象,并將threadFunction作為線程函數(shù)傳遞給它。然后,主線程繼續(xù)執(zhí)行,在執(zhí)行完std::cout語(yǔ)句后,通過(guò)調(diào)用myThread.join()等待線程執(zhí)行完畢。

此外,還可以傳遞參數(shù)給線程函數(shù):

#include <iostream>
#include <thread>
// 線程函數(shù)
void threadFunction(int n) {
std::cout << "Hello from thread! Number: " << n << std::endl;
}
int main() {
int numThreads = 5;
std::thread threads[numThreads];
// 創(chuàng)建多個(gè)線程對(duì)象,并傳入線程函數(shù)和參數(shù)
for (int i = 0; i < numThreads; i++) {
threads[i] = std::thread(threadFunction, i);
}
// 主線程繼續(xù)執(zhí)行
std::cout << "Hello from main thread!" << std::endl;
// 等待所有線程執(zhí)行完畢
for (int i = 0; i < numThreads; i++) {
threads[i].join();
}
return 0;
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè)包含5個(gè)線程對(duì)象的數(shù)組,并通過(guò)循環(huán)在每個(gè)線程對(duì)象上調(diào)用std::thread構(gòu)造函數(shù)來(lái)創(chuàng)建線程。每個(gè)線程對(duì)象都傳遞了不同的參數(shù)給線程函數(shù)threadFunction。

需要注意的是,在使用線程時(shí)需要小心處理共享資源的訪問(wèn),以避免競(jìng)態(tài)條件和數(shù)據(jù)競(jìng)爭(zhēng)的問(wèn)題??梢允褂没コ饬浚╯td::mutex)來(lái)對(duì)共享資源進(jìn)行同步訪問(wèn),或者使用其他線程安全的容器和工具。

0