c++如何快速中断线程
时间: 2023-08-05 07:18:05 浏览: 300
C++11 线程的中断,继续以及停止
4星 · 用户满意度95%
在C++中,可以使用`std::thread::interrupt()`函数快速中断线程。调用该函数后,线程会被中断并抛出一个`std::thread_interrupted`异常。在线程的执行函数中可以通过捕获该异常来进行一些清理工作并结束线程。
下面是一个简单的示例代码:
```c++
#include <thread>
#include <iostream>
#include <chrono>
void myThreadFunc()
{
try
{
// 模拟一些耗时的操作
while (true)
{
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
catch (const std::thread_interrupted&)
{
// 中断线程时会抛出该异常,可以在此处进行清理工作
std::cout << "Thread interrupted." << std::endl;
}
}
int main()
{
std::thread myThread(myThreadFunc);
std::this_thread::sleep_for(std::chrono::seconds(5)); // 等待5秒钟
myThread.interrupt(); // 中断线程
myThread.join(); // 等待线程结束
return 0;
}
```
在上面的示例代码中,我们创建了一个线程并让它执行`myThreadFunc()`函数。在该函数中,我们使用了一个无限循环来模拟一些耗时的操作。在`main()`函数中,我们等待5秒钟后中断线程并等待线程结束。由于线程在执行过程中被中断,因此会抛出一个`std::thread_interrupted`异常,并在异常处理代码中输出一条消息。最后,我们调用`join()`函数等待线程结束。
阅读全文