std::thread调用成员函数
时间: 2023-08-15 18:14:36 浏览: 91
您可以使用`std::thread`调用成员函数的方法是通过使用lambda表达式或者`std::bind`来包装成员函数的调用。下面是两种常见的方法:
1. 使用lambda表达式:
```cpp
#include <iostream>
#include <thread>
class MyClass {
public:
void memberFunction(int arg) {
std::cout << "Member function called with argument: " << arg << std::endl;
}
};
int main() {
MyClass obj;
int arg = 42;
std::thread t([&obj, arg](){
obj.memberFunction(arg);
});
t.join();
return 0;
}
```
2. 使用`std::bind`:
```cpp
#include <iostream>
#include <functional>
#include <thread>
class MyClass {
public:
void memberFunction(int arg) {
std::cout << "Member function called with argument: " << arg << std::endl;
}
};
int main() {
MyClass obj;
int arg = 42;
std::thread t(std::bind(&MyClass::memberFunction, &obj, arg));
t.join();
return 0;
}
```
这两种方法都可以将成员函数与对象绑定,并在新线程中调用。需要注意的是,如果成员函数使用了对象的成员变量,需要确保在新线程中访问这些成员变量的安全性。
阅读全文