C++ 如何停止/中断boost::线程?

C++ 如何停止/中断boost::线程?,c++,multithreading,boost,C++,Multithreading,Boost,我在一个函数中创建一个线程,在另一个函数中,我想停止这个线程。 我试过这样做: class Server { private: boost::thread* mPtrThread; ... public: void createNewThread() { boost::thread t(...); mPtrThread = &t; } void stopThread() {

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

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

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


     void stopThread()
     {
        mPtrThread->interrupt();
     }
}

但它不起作用。我如何停止线程?

首先,在
createNewThread()
中,在本地作用域中声明
boost::thread t
,并将其指针分配给类成员
mPtrThread
createNewThread()
完成后,
t
被销毁,mPtrThread将持有非法指针

我宁愿使用类似于
mprthread=newboost::thread(…)


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

如果您想使用interrupt(),您应该定义。调用interrupt()后,线程将在到达某个中断点时被中断。

这篇文章真不错,帮助很大。谢谢~您还应该使用智能指针来确保boost::Thread被删除。