c++ 使用成员函数开启线程
时间: 2023-08-05 19:27:33 浏览: 238
在 C++ 中,可以使用成员函数开启线程。具体步骤如下:
1. 定义一个类,该类包含需要在新线程中执行的成员函数。
2. 在该类中定义一个成员函数,该函数作为新线程的入口点,其参数为 void*。
3. 在该成员函数中,将参数转换为包含该类实例指针的对象。
4. 调用需要在新线程中执行的成员函数。
5. 在主函数中创建该类实例,然后使用 std::thread 类的构造函数创建新线程。
代码示例:
```c++
#include <iostream>
#include <thread>
class MyClass {
public:
void myFunction() {
std::cout << "MyClass::myFunction() is running in a new thread." << std::endl;
}
static void threadFunc(void* ptr) {
MyClass* obj = static_cast<MyClass*>(ptr);
obj->myFunction();
}
};
int main() {
MyClass obj;
std::thread t(&MyClass::threadFunc, &obj);
t.join();
return 0;
}
```
在上面的例子中,MyClass 类包含 myFunction() 成员函数。该类还定义了一个静态成员函数 threadFunc(),该函数作为新线程的入口点。在 threadFunc() 函数中,将参数转换为 MyClass 实例指针,然后调用 myFunction() 函数。
在主函数中,创建 MyClass 实例 obj,然后使用 std::thread 类的构造函数创建新线程。该构造函数接受两个参数:函数指针和参数。在这里,我们传递 threadFunc() 函数指针和 MyClass 实例 obj 的地址。
最后,调用 std::thread 类的 join() 成员函数等待新线程完成。
阅读全文