std::thread m_hStopStreamThread = std::thread(&CRealStreamWrapper::StartStream, this)使用详细实例介绍
时间: 2024-09-28 10:05:26 浏览: 31
MobileCapture:用于照片捕捉的移动应用
`std::thread` 是 C++11 引入的一个库,用于创建线程并执行指定的函数。在这个例子中,`m_hStopStreamThread = std::thread(&CRealStreamWrapper::StartStream, this)` 的意思是:
1. `std::thread` 类型变量 `m_hStopStreamThread` 被初始化为一个新的线程,这个线程会执行 `CRealStreamWrapper` 类中的 `StartStream` 函数。
2. `&CRealStreamWrapper::StartStream` 是函数指针,它指向了 `CRealStreamWrapper` 类的 `StartStream` 成员函数。`this` 指针传递给该函数指针,表示在线程执行时使用当前对象(即 `CRealStreamWrapper` 实例)的成员。
举个简单的实际例子:
```cpp
class CRealStreamWrapper {
public:
void StartStream() {
// 这里是你要在线程中执行的具体操作
std::cout << "Starting stream...\n";
for (int i = 0; i < 5 && !stopRequested(); ++i) {
processData();
}
std::cout << "Stream stopped.\n";
}
bool stopRequested() { return stopSignalReceived; } // 假设有一个信号用来停止流
private:
bool stopSignalReceived = false;
};
// 使用示例
CRealStreamWrapper streamWrapper;
void startStreaming() {
m_hStopStreamThread = std::thread(&CRealStreamWrapper::StartStream, &streamWrapper);
}
void requestStop() {
streamWrapper.stopSignalReceived = true; // 请求停止流
}
int main() {
startStreaming();
// 主线程做一些其他事情
doSomething();
requestStop(); // 如果需要,在适当的时候请求停止流
m_hStopStreamThread.join(); // 等待线程结束
return 0;
}
```
在这个例子中,`startStreaming()` 函数启动了一个新线程,开始执行 `StartStream` 函数。当主线程想要停止流时,调用 `requestStop()` 来设置 `stopSignalReceived` 为 `true`,从而在线程中触发停止条件。最后,通过 `join()` 方法等待线程完成。
阅读全文