[[Hirofumi Fujii Start Page]]

* Thread object の destructor [#b0eba579]
Thead として実行可能な object が消される時、thread 実行中である場合
どうするか?
基本的には thead 終了を待って消すのがよいような気がする。
もし、途中であっても本当にその時点で消す必要があるなら、たとえば
stop(int delta_time) みたいな関数を用意して本当にとめてから消す。

たとえば

 int main()
 {
   Thread t;
   t.run();
     ...
   return 0;
 }

この場合、t は thread が終了するまで消えない。従って、プログラムも
thread が終了するまで終了しない。

となると、function 中にあると、thread 終了まで function を抜けない。
これはちょっと嫌かも、、

Thread と service handle にしたらどうか?

 int main()
 {
   Thead t;
   ServiceHandle s;
   t.run(s);
 }

この場合、t.run(const ServiceHandle& s) の中で、s の copy を作れば、
s は消えてよい。

やっぱり変だ。終了の同期をとりたければ join() を使えばよい。
消える時は強制終了すべきだ。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS