[英]How to kill or Terminate a boost Thread
我想终止或终止加速线程。 代码在这里:
DWORD WINAPI StartFaceDetector(LPVOID temp)
{
int j=0;
char **argv1;
QApplication a(j,argv1);//add some thread here
gui::VisualControl w;
t=&w;
boost::thread u(&faceThread);
w.show();
a.exec();
// I Want to close u thread here.
return 0;
}
我想在函数返回之前关闭该升压线程。 提前致谢。
在Windows上:
TerminateThread(u.native_handle(), 0);
在Linux / QNX / UNIX /具有pthread支持的任何平台上:
pthread_cancel(u.native_handle());
要么
pthread_kill(u.native_handle(), 9);
请注意,由于行为是依赖于平台且定义不明确的,因此boost的作者有意忽略了这一点。 但是,您并不是唯一可以使用此功能的人...
使用interrupt()
。 另外,您应该定义中断点 。 一旦到达中断点之一,线程将在调用interrupt()
之后被中断。
u.interrupt();
更多信息 :
调用
interrupt()
只是在该线程的线程管理结构中设置一个标志并返回:它不等待该线程实际被中断。 这很重要,因为线程只能在预定义的中断点之一处被中断,并且可能是线程从不执行中断点,因此从不看到请求。 当前,中断点为:
boost::thread::join()
boost::thread::timed_join()
boost::condition_variable::wait()
boost::condition_variable::timed_wait()
boost::condition_variable_any::wait()
boost::condition_variable_any::timed_wait()
boost::this_thread::sleep()
boost::this_thread::interruption_point()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.