私はいくつかの不変クラスを設計してい.Count
ますが、インスタンスの総数を取得するには、いくつかの変数が必要です。しかし、静的変数を持つことはマルチスレッドに影響しますか?
Add、Remove などのメソッドは.Count
値を更新する必要があるためです。たぶん私はそれを怠惰なプロパティにするべきですか?
私はいくつかの不変クラスを設計してい.Count
ますが、インスタンスの総数を取得するには、いくつかの変数が必要です。しかし、静的変数を持つことはマルチスレッドに影響しますか?
Add、Remove などのメソッドは.Count
値を更新する必要があるためです。たぶん私はそれを怠惰なプロパティにするべきですか?
少なくとも、指定した例では、 Interlocked クラスの関数の使用を検討することをお勧めします。
カウンターだけなら、ロックではなく連動操作も選択肢の一つかもしれません。MSDN には、参照カウントのコンテキストでこれの良い例があります。
しかし、静的変数を持つことはマルチスレッドに影響しますか?
承知しました!共有状態は、定義上、マルチスレッドによって影響を受けます。
Add、Remove などのメソッドは .Count 値を更新する必要があるためです。たぶん私はそれを怠惰なプロパティにするべきですか?
ロックを回避するために、アトミックな追加( Java のAtomicIntegerなど)を行うクラスを使用することをお勧めします。こちらをご覧ください。
はい、マルチスレッド環境で共有変数を更新するときはいつでも、それらの更新をロックでラップするだけで済みます。