在C++中,可以通過以下幾種方式傳遞參數給線程:
傳遞參數作為線程函數的參數:
#include <iostream>
#include <thread>
void myFunction(int parameter) {
std::cout << "Thread parameter: " << parameter << std::endl;
}
int main() {
int parameter = 10;
std::thread myThread(myFunction, parameter);
myThread.join();
return 0;
}
在這個例子中,myFunction
是線程函數,parameter
是要傳遞給線程函數的參數。在創建線程時,通過在參數列表中傳遞parameter
,將其作為線程函數的參數傳遞進去。
使用lambda表達式傳遞參數:
#include <iostream>
#include <thread>
int main() {
int parameter = 10;
std::thread myThread([parameter]() {
std::cout << "Thread parameter: " << parameter << std::endl;
});
myThread.join();
return 0;
}
在這個例子中,通過lambda表達式創建了一個匿名函數,并在函數體中使用了parameter
。通過在方括號中使用parameter
,將其作為lambda函數的捕獲變量,保證線程可以訪問到它。
使用std::ref傳遞引用參數:
#include <iostream>
#include <thread>
void myFunction(int& parameter) {
std::cout << "Thread parameter: " << parameter << std::endl;
}
int main() {
int parameter = 10;
std::thread myThread(myFunction, std::ref(parameter));
myThread.join();
return 0;
}
在這個例子中,myFunction
的參數為引用類型。通過使用std::ref
來包裝parameter
,將其作為引用參數傳遞給線程函數。
這些是傳遞參數給C++線程的幾種常見方法,根據不同的情況選擇適合的方法即可。