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

wtm*_*wtm 10 c++ multithreading boost

我在函数中创建一个线程,在另一个函数中,我想停止这个线程.我试过这样的:

class Server
{
private:
     boost::thread* mPtrThread;
...

public:
     void createNewThread()
     {
        boost::thread t(...);
        mPtrThread = &t;
     }


     void stopThread()
     {
        mPtrThread->interrupt();
     }
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我怎么能阻止线程?

Ali*_*gus 22

如果要使用interrupt(),则应定义中断点.一旦到达其中一个中断点,线程将在调用interrupt()后中断.


Eit*_*n T 18

首先,在createNewThread()你声明了一个boost::thread t本地范围和它的指针分配给类成员mPtrThread.后createNewThread()完成,t被破坏,mPtrThread将举行非法指针.

我宁愿用类似的东西mPtrThread = new boost::thread(...);

您可能还想阅读本文以了解有关Boost中多线程的更多信息.