0

今日は、boost::scoped_ptr を使用して、boost::thread を指すようにします。

私のThread.hにはあり、私の Thread.cpp には、boost::thread の作成が行わboost::scoped_ptr<boost::thread> m_threadれる関数があります。create()試してみThread::m_thread (new boost::thread(attr, boost::bind(%Thread::run, this)));ましたが、当然のことながらうまくいきませんでした。

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 に答える