Boost作用域指针指向Boost线程

Boost Scoped Pointer To Boost Thread

本文关键字:Boost 线程 指针 作用域      更新时间:2023-10-16

今天,我想使用boost::scope_ptr来指向boost::线程。

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

我自己(或通过使用boost文档)都不知道该如何做到这一点,因为我不完全了解scope_ptr发生了什么以及它是如何工作的。以前我经常使用原始指针,它工作得很好,但现在不允许我使用它。

谢谢你抽出时间!

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

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

但不要忘记,该线程可能会在构造函数结束其工作之前启动