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被删除。