コンテンツへスキップ
ものがたり
戻る

lock the nation

stringオブジェクトってlockに使っちゃいけなかったんですねぇ。値型とSystem.Typeがイカンというのは知ってましたが、こいつは気づきませんでした。

これは、(MS.NETではどうだか知りませんが)AppDomainをまたがって保持されるため、staticコンテキストにおけるlockとは一意性を異にするためです。


コメント

ladybug — 07/22/2005 15:34:01

なるほど>stringをlock

System.Type って問題ありましたっけ?
(「published な要素を lock するのは常に deadlock の危険性がある」という意味なら、Type 型に限定した話じゃないし)

atsushieno — 07/22/2005 15:58:41

理屈としては、System.Typeに限らず、またpublishedであるかどうかに関わらず(リフレクションで取得されたらアウト)、常にdeadlockの危険性はあります。

System.Typeの場合、publishedでないとしても、内部的にさまざまな場面でアクセスされうるので、特に例示されているのだと思います。ランタイム内部で、どの部分でMonitorを考慮しているのか、はたまた型を扱うコードのどの部分がmanagedでどの部分がInternalCallなのかは、明確ではないですよね。


この記事を共有:

前の記事
2005-07-24
次の記事
one hour by the concrete class