提升Scoped指针以提升线程

时间:2013-08-28 16:32:05

标签: c++ boost boost-smart-ptr

今天我想使用boost :: scoped_ptr指向boost :: thread。

在我的 Thread.h 中我有boost::scoped_ptr<boost::thread> m_thread,在我的Thread.cpp中有一个函数create(),其中应该创建boost :: thread。 我试过Thread::m_thread (new boost::thread(attr, boost::bind(%Thread::run, this)));,但不出所料,它没有用。

我无法弄清楚自己(或使用boost文档)我将如何做到这一点,因为我不完全了解scoped_ptr发生了什么以及它是如何工作的。 在我以前使用原始指针之前,它工作得很好,但此时我不允许使用它。

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

我不知道你得到了什么样的错误,试试这个:

class Thread {
 public:
  Thread() : thread_(new boost::thread(boost::bind(&Thread::run, this))) {
  }

  void run() {
  }

  ~Thread() {
    thread_->join();
  }

 private:
  boost::scoped_ptr<boost::thread> thread_;
};

int main() {
  Thread thread;
}

但不要忘记,该线程可能会在构造函数结束工作之前开始。