[英]How to stop/interrupt a boost::thread?
我在函数中创建一个线程,在另一个函数中,我想停止这个线程。 我试过这样的:
class Server
{
private:
boost::thread* mPtrThread;
...
public:
void createNewThread()
{
boost::thread t(...);
mPtrThread = &t;
}
void stopThread()
{
mPtrThread->interrupt();
}
}
但它不起作用。我怎么能阻止线程?
如果要使用interrupt(),则应定义中断点 。 一旦到达其中一个中断点,线程将在调用interrupt()后中断。
首先,在createNewThread()
,在本地作用域中声明一个boost::thread t
,并将其指针指定给类成员mPtrThread
。 在createNewThread()
完成后, t
被销毁,mPtrThread将保存非法指针。
我宁愿使用像mPtrThread = new boost::thread(...)
;
您可能还想阅读本文以了解有关Boost中多线程的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.