C++ C14标准中知道线程ID,结束掉线程的方法
时间: 2023-10-06 14:10:52 浏览: 443
在C++14标准中,可以使用`std::this_thread::get_id()`函数获取当前线程的ID。要结束一个线程,有两种方法:
1. 使用`std::thread::join()`函数等待线程执行完毕。在等待期间,主线程会一直阻塞,直到被等待的线程执行完毕。这是一种安全的方法,可以避免出现内存泄漏和其他问题。
2. 使用`std::thread::detach()`函数将线程与执行它的线程分离。分离后,执行线程的资源会交给操作系统管理,主线程无法控制该线程的执行。因此,需要确保分离后的线程不会访问已经被删除的资源或者执行可能导致错误的操作。这种方法通常用于线程执行独立的任务,不需要与主线程同步的场景。
以下是使用`std::thread::join()`函数结束线程的示例代码:
```c++
#include <iostream>
#include <thread>
void threadFunction()
{
// 线程执行的内容
std::cout << "Thread ID: " << std::this_thread::get_id() << std::endl;
}
int main()
{
// 创建线程并启动
std::thread t(threadFunction);
// 等待线程执行完毕
t.join();
// 线程执行完毕后,主线程继续执行
std::cout << "Main thread" << std::endl;
return 0;
}
```
在上面的代码中,`std::thread t(threadFunction)`创建了一个新的线程,并执行`threadFunction`函数。`t.join()`等待线程执行完毕后,主线程继续执行后面的代码。
阅读全文