【发布时间】:2014-12-07 18:31:40
【问题描述】:
比如说,我有一个 C++ 类,其中包含一个线程指针作为成员变量。线程一直运行直到程序退出。 如果我删除析构函数中的指针,那一刻似乎线程还没有完成?管理这个或任何技巧的最佳做法是什么?
示例代码:
class Car {
public:
Car();
~Car();
private:
boost::thread *m_runningThreadPtr;
};
Car::Car() {
m_runningThreadPtr = new boost::thread();
}
Car::~Car() {
delete m_runningThreadPtr; // The thread should be still running now.
// Problematic if it was deleted here?
}
【问题讨论】:
-
你为什么首先使用
new作为线程?这似乎完全没有必要。 -
你应该优雅地退出那个线程,然后加入等待它结束,像这样: Car::~Car() {m_runningThreadPtr->join();删除 m_runningThreadPtr; }
标签: c++ multithreading