c++类的成员函数创建线程
时间: 2023-05-11 12:00:24 浏览: 239
在C++类中创建线程可以使用类的成员函数来实现,可以将成员函数作为参数传递给线程函数进行调用。要创建一个线程,需要使用C++11标准库中的<thread>头文件中的std::thread类。在类的成员函数中创建线程,需要在函数定义前加上static关键字,因为非静态成员函数需要与类的对象一起调用,而线程无法调用对象。如果函数不是静态的,则需要传递一个指向对象的指针作为函数参数。
具体实现可以先定义一个static成员函数,该函数将作为线程函数,然后在该函数中调用成员函数。在创建线程时,可以使用std::thread构造函数,将该静态成员函数和对象指针作为参数传递给std::thread对象。
例如:
```
#include <iostream>
#include <thread>
class MyClass {
public:
void myFunc() {
std::cout << "This is myFunc." << std::endl;
}
static void threadFunc(MyClass* obj) {
obj->myFunc();
}
};
int main() {
MyClass obj;
std::thread myThread(&MyClass::threadFunc, &obj);
myThread.join();
return 0;
}
```
在上面的例子中,我们定义了一个类MyClass,其中包含一个成员函数myFunc。由于该函数需要在线程中调用,因此我们还定义了一个静态成员函数threadFunc,并在其中调用了myFunc。在main函数中,我们创建了一个MyClass对象obj,并将该对象指针传递给std::thread的构造函数。这将构造一个新的线程,并在新线程中调用threadFunc函数。最后,我们使用myThread.join()函数等待线程结束。
总之,在C++中,使用类的成员函数来创建线程是非常方便和灵活的方法,可以使用这种方法在类中处理多线程任务。
阅读全文