0

今天我想用一个 boost::scoped_ptr 来指向一个 boost::thread。

在我的Thread.hboost::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 发生了什么以及它是如何工作的。在我使用原始指针之前,它工作得很好,但此时我不允许使用它。

谢谢你的时间!

4

1 回答 1

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;
}

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

于 2013-08-29T06:36:42.823 回答