std::thread* currentThread;如何绑定线程函数?
时间: 2024-09-18 07:06:51 浏览: 48
在C++中,当你有一个指向`std::thread`类型的指针`currentThread`,想要将一个线程函数与它关联起来,通常是在创建线程时完成的。以下是一个简单的步骤说明:
1. 首先,你需要定义一个线程函数(也称为线程回调函数)。例如:
```cpp
void myThreadFunction() {
// 这里是你线程要执行的具体任务
std::cout << "Current thread function running.\n";
}
```
2. 使用`std::thread`构造函数来启动一个新的线程,并将你想要执行的函数作为参数传递,同时将`currentThread`指向新创建的线程:
```cpp
std::thread* currentThread = new std::thread(myThreadFunction); // 或者myThreadFunction(this) if 有额外参数
```
3. 当线程启动后,`currentThread`就指向了正在运行的线程。
注意:为了避免内存泄漏,你应该确保在不需要这个线程时手动删除它:
```cpp
currentThread->join(); // 等待线程结束
delete currentThread; // 删除线程
```
或者在创建线程的地方,使用RAII技术(Resource Acquisition Is Initialization)如`std::unique_ptr`:
```cpp
std::unique_ptr<std::thread> thread(new std::thread(myThreadFunction));
// 后续的代码...
thread->join();
```
在这个例子中,`thread`会在其生命周期结束后自动删除,避免了内存泄漏。
阅读全文