繁体   English   中英

如何停止/中断boost :: thread?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM