A simple and totally thread-safe implementation of IDisposable より。
IDisposable をスレッドセーフにするリファレンス実装。
Interlocked.CompareExchange を使って軽量にスレッドセーフにしてますが、やってることはごく普通にスレッドセーフにしているだけですね。普通に lock なんかを使っても意味は同じです。
ちなみに、IDisposable の実装方法のガイドラインは↓にあります。
アンマネージ リソースをクリーンアップするための Finalize および Dispose の実装
ここにあるように Dispose() メソッドは何回呼ばれても大丈夫なようにしておかなくちゃいけません。
ただ、スレッドセーフにしろとはまでは言ってませんし、実際、Dispose() メソッドがスレッドセーフになっているクラスはほとんどないんじゃないかと思います。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。