阅读量:4
在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++线程的几种常见方法,根据不同的情况选择适合的方法即可。