代码如下:
#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打断子线程。