std::thread使用类接口做为线程参数如何指定
时间: 2023-08-22 15:09:37 浏览: 76
通过Thread建立线程
要在std::thread中使用类接口作为线程参数,可以使用std::bind函数或者lambda表达式来指定要调用的函数,同时传递类对象的指针或引用作为第一个参数。
例如,如果有一个类MyClass,其中包含一个公共成员函数doSomething(),可以通过以下方式在std::thread中使用它:
```
MyClass obj;
std::thread t(&MyClass::doSomething, &obj);
```
在这里,我们将doSomething()函数和obj的指针作为参数传递给std::thread构造函数,以创建一个新的线程t。
另一种方法是使用std::bind函数,例如:
```
MyClass obj;
std::thread t(std::bind(&MyClass::doSomething, &obj));
```
在这里,我们使用std::bind函数将doSomething()函数和obj的指针作为参数绑定到一个新的函数对象上,并将该函数对象作为参数传递给std::thread构造函数。
还可以使用lambda表达式来指定要调用的函数,例如:
```
MyClass obj;
std::thread t([&obj](){ obj.doSomething(); });
```
在这里,我们使用lambda表达式将一个函数对象作为参数传递给std::thread构造函数,该函数对象捕获了obj的引用,并在其中调用doSomething()函数。
阅读全文