关于子线程被打断执行的问题

简介: 关于子线程被打断执行的问题

代码如下:

#include <iostream>
#include <windows.h>
#include <boost/thread/thread.hpp>
using namespace std;
void print()
{
  while (!boost::this_thread::interruption_requested())
  {
    std::cout << "111" << std::endl;
    Sleep(1000);
  }
}
void main()
{
  boost::thread th = boost::thread(&print);
  getchar();
  th.interrupt();
  th.join();
  while (1);
  return ;
}

while循环中使用了boost::this_thread::interruption_requested,在主线程中可以调用boost线程的interrupt函数打断子线程的while循环,退出子线程。如果子线程的执行改为while(1),则主线程当前不能通过interrupt打断子线程。

相关文章
|
6月前
|
监控 测试技术 程序员
解决线程死循环问题的有效方法
作为开发者想必都清楚,多线程应用程序的开发为我们日常开发工作中提供了并发执行任务的能力,但线程死循环问题却是一个常见而令人头疼的挑战,因为线程死循环可能导致系统的不稳定性、资源浪费以及应用程序的异常运行,所以准确地定位和妥善处理线程死循环现象,并在编码阶段就避免潜在风险,成为开发人员必须面对的重要问题,线程死循环问题的解决不仅有助于提高系统的稳定性和可用性,还能优化资源利用和提升应用程序的性能,通过采取适当的预防和处理措施,开发人员能够避免线程陷入无尽的循环,并及时发现和解决潜在问题。那么本文就来分享一下关于如何处理线程死循环问题,以及如何在编码阶段规避潜在风险。
207 2
解决线程死循环问题的有效方法
|
3月前
|
监控
子线程杀掉主线程
子线程杀掉主线程
32 2
|
6月前
|
Java
主线程等待子线程执行完毕再执行的几种方式
主线程等待子线程执行完毕再执行的几种方式
127 0
主线程等待子线程执行完毕再执行方法
主线程等待子线程执行完毕再执行方法
182 0
|
编译器
主线程退出对子线程影响
主线程退出对子线程影响
127 0
|
Java Android开发
【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )
【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )
486 0
|
自然语言处理 算法 Linux
线程执行 Q&A
线程执行 Q&A
77 0
我们该如何正确的中断一个正在执行的线程??
当我们在调用Java对象的wait()方法或者线程的sleep()方法时,需要捕获并处理InterruptedException异常。如果我们对InterruptedException异常处理不当,则会发生我们意想不到的后果!今天,我们就以一个案例的形式,来为大家详细介绍下为何中断执行的线程不起作用。
159 0