C# のいわゆる lock は、ロックがなされることを保証はしてくれるのですが、複数の待ちスレッドが発生した場合に順序性が担保されません。

どうにかして順序性を確保できないかなぁと思ったのですが...

今日は、継承可能なシングルトンクラスについてです。

一般的なシングルトンパターンは、private static なインスタンスフィールドの初期化子を使って生成したインスタンスを、プロパティから参照することで実装します。

でも、シングルトンな管理クラスを作成して、その派生クラスに独自処理を実装したいとします。

ジェネリックを駆使すると、万人向けにならないので、ある程度はテンプレートコーディングとして考えた場合にどうあるか。

C# の IDisposable の実装は、Dispose() だけを考えればシンプルです。 が、少し凝ったことをしようとすると、クラスにアンマネージドなリソースを抱えざるを得ないこともあります。そのような場合には、ファイナライザの挙動も考慮に入れて、さらには new() したけれども Dispose() してくれない利用者のことも考慮に入れる必要があります。 また、派生クラスをチームで製作する場合には特に、分業で作業してもバグの少ないコードスタイルがよいでしょう。 下記に示すコードは、安全なリソースの解放を考慮し、継承処理も念頭に置いた IDisposable の実装例です。

ナビゲーション

プロフィール

Photo Hondarer  My status

自分に正直に、目指す物を目指すかたちで、全ての人が幸せになれるシステムを削り出す職人でありたい。

2016年6月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

アーカイブ