在C++11中,可以将带参数的函数传递给线程中运行的函数。这可以通过使用lambda表达式或者std::bind函数来实现。
示例代码:
#include <iostream>
#include <thread>
void threadFunc(int param) {
std::cout << "Thread function. Parameter: " << param << std::endl;
}
int main() {
int param = 42;
std::thread t([¶m]() {
threadFunc(param);
});
t.join();
return 0;
}
在上面的示例中,我们定义了一个带参数的线程函数threadFunc
,然后使用lambda表达式将其传递给线程对象t
的构造函数。lambda表达式捕获了外部变量param
,并在内部调用了threadFunc
函数。最后,我们调用t.join()
等待线程执行完毕。
示例代码:
#include <iostream>
#include <thread>
#include <functional>
void threadFunc(int param) {
std::cout << "Thread function. Parameter: " << param << std::endl;
}
int main() {
int param = 42;
std::thread t(std::bind(threadFunc, param));
t.join();
return 0;
}
在上面的示例中,我们使用std::bind函数将带参数的函数threadFunc
和参数param
绑定在一起,生成一个新的可调用对象。然后将该可调用对象传递给线程对象t
的构造函数。最后,我们调用t.join()
等待线程执行完毕。
这两种方法都可以实现将带参数的函数传递给线程中运行的函数。选择哪种方法取决于个人偏好和具体的使用场景。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云