C++通过线程ID结束线程
时间: 2023-06-28 09:04:26 浏览: 192
C++ 等待线程结束
4星 · 用户满意度95%
在 C++ 中,可以使用 `std::thread::id` 类型表示线程 ID。要结束一个线程,可以使用 `std::thread::joinable()` 函数检查线程是否可加入,如果可加入,则可以使用 `std::thread::join()` 函数等待线程完成并结束它。
如果你需要在一个线程中结束另一个线程,可以使用条件变量和互斥锁来协调线程之间的交互。具体步骤如下:
1. 创建一个互斥锁和条件变量,用于协调线程之间的同步操作。
```c++
std::mutex mtx;
std::condition_variable cv;
```
2. 在要结束的线程中使用 `std::unique_lock` 锁住互斥锁,等待条件变量的信号。
```c++
void ThreadFunc(std::thread::id threadId)
{
std::unique_lock<std::mutex> lk(mtx);
cv.wait(lk, [&]() { return threadId == std::this_thread::get_id(); });
// 执行线程结束的操作
}
```
3. 在另一个线程中,通过线程 ID 发送条件变量的信号,唤醒被等待的线程。
```c++
void StopThread(std::thread::id threadId)
{
cv.notify_all();
}
```
这样,当你想要结束一个线程时,只需要调用 `StopThread()` 函数,发送条件变量的信号,等待的线程就会被唤醒并执行结束操作。
阅读全文