マルチスレッドプログラミング相談室 その7at TECH
マルチスレッドプログラミング相談室 その7 - 暇つぶし2ch6:デフォルトの名無しさん
08/07/09 20:28:14
boost::threadを使っていて質問があります。
スレッドオブジェクトをスレッド処理完了後に自動消去したいのですが、
以下のやり方だとまずい気がします。定石みたいなものはないでしょうか?

struct ThreadManager {
 boost::shared_ptr<Thread> th_; // 管理するスレッド
 bool thread_is_running(void) const { return th_!=0; }
 void start_thread(void) { if (thread_is_running()) return; th_.reset(new Thread(this)); boost::thread(boost::ref(*th_.get())); }
 // ※スレッド処理が終わったらth_を空にしたい
 void delete_thread(void) { thread.reset(); }
};

struct Thread {
 ThreadManager* p_;
 Thread(ThreadManager* p) : p_(p) {}
 void operator()(void) { /* ... スレッド処理 ... */ p_->delete_thread(); }
 // スレッド処理終了後、ThreadManagerを通じて自分を消去
};



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch