2010-03-31

threadは明示的に使うべし

FCDで、thread周りの文面が、さらに明確に定義されるようになった。

たとえば、threadのデストラクタだ。もし、joinable()がtrueを返すthreadオブジェクトのデストラクタが実行された場合、terminate()が呼び出される。それ以外の場合、なにもしない(スレッドは、自分で実行を終えるまで、動き続ける。)

なぜか。もし、暗黙的に、join()やdetach()が呼び出される設計であれば、バグの温床になりえるからだ。

move代入演算子は、move元のオブジェクトが、joinableであった場合、terminate()を呼び出す。これはどうだろう。まあ、たしかに、join()している最中にmoveされたら、たまったものではない。join()出来る可能性があるオブジェクトをmoveするというのは、バグとみなしてもいいのかもしれない。

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.