flat7th

memo/20070326

created 2007-03-26 modified 2009-02-16 

利用側のスレッドモデルを規定できないクラスライブラリを書くという難しい作業に手を染めてしまった。

リンク備考
IBM:スレッド・セーフの特性についてクラスライブラリ提供者がスレッドセーフをドキュメントにどう記述するかのガイド

Javadocではスレッドセーフに対する標準的な記述法(Javadocのタグ)が存在しないみたい。
ぐぐったら、Doclet を拡張して、メンバごとにスレッドセーフかどうかをtrue/false/不明 で表示できるようにしたひとがいた。

.Netでは、クラスごとに このクラスはスレッドセーフです とか、staticメンバはスレッドセーフだけど非staticメンバはスレッドセーフとは限りません、とか文章で書いてある。

.Netのやりかたは適切だと思う。メンバごとに確認するのでは煩雑だ。
かといってライブラリ全体で決めることは一般的に難しい。
あと、ほとんどのクラスは単一のスレッドからのみアクセスされるだろうという楽観的な予想も入ってると思うけど、それで適切だと思う。

なお.NetのSocketクラスは「スレッドセーフです」とのこと。

ふう

利用側のスレッドモデルを決定できる念力をゲット
...できたと思う...
これで仕事が楽になるはず

2009/2/16 IBMのページへのリンクがリンク切れしてたので修正。