あるクラスに次のプロパティがあり、その目的がロックとして使用されるとします。
protected object SyncRoot { get; private set; }
とにかく、これがどのように設定されたかに関係なく。実際に設定されている場合、それを使用するためのベストプラクティスは何ですか?
null オブジェクトではロックが効かないので、このように処理すればよいのでしょうか?
lock (SyncRoot ?? new object())
SomeMethod();
または、このように null をチェックする必要がありますか?
if (SyncRoot != null)
lock (SyncRoot)
SomeMethod();
else
SomeMethod();
実際に設定されている場合は、それを使用してロックしたいと思います。そうでなければ、私は気にしません。とにかく、最初のソリューションは非効率的または冗長ですか?
編集:これらの答えはすべて良いです。ただし、1つしか選べません。Luke と話し合った私の状況を考えると、私の SyncRoot を null にする理由はありません。シングルスレッド環境でのロックのオーバーヘッドはそれほど大きくありませんが、マルチスレッド環境では必要です。
(4 人全員に投票してください) 迅速な返信ありがとうございます。