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

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

代码如下:

#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打断子线程。

相关文章
|
21天前
|
Java
主线程等待子线程执行完毕再执行的几种方式
主线程等待子线程执行完毕再执行的几种方式
|
7月前
主线程等待子线程执行完毕再执行方法
主线程等待子线程执行完毕再执行方法
|
10月前
|
编译器
主线程退出对子线程影响
主线程退出对子线程影响
83 0
|
11月前
|
算法
|
Java Android开发
【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )
【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )
450 0
|
自然语言处理 算法 Linux
线程执行 Q&A
线程执行 Q&A
59 0
|
Java API 数据库
多线程001 - 主线程等待子线程结束
在很多时候,我们期望实现这么一种功能:在主线程中启动一些子线程,等待所有子线程执行结束后,主线程再继续执行。比如:老板分配任务,众多工人开始工作,等所有工人完成工作后,老板进行检查。
142 0
我们该如何正确的中断一个正在执行的线程??
当我们在调用Java对象的wait()方法或者线程的sleep()方法时,需要捕获并处理InterruptedException异常。如果我们对InterruptedException异常处理不当,则会发生我们意想不到的后果!今天,我们就以一个案例的形式,来为大家详细介绍下为何中断执行的线程不起作用。
140 0
|
安全 Java
Java多线程-线程中止
不正确的线程中止-Stop Stop:中止线程,并且清除监控器锁的信息,但是可能导致线程安全问题,JDK不建议用。Destroy: JDK未实现该方法。 /** * @author simon */ public class StopThread extends Thread { pr...
2771 0

热门文章

最新文章