質問
不変のクラスをいくつか設計していますが、インスタンスの総数を取得するには、 .Count
などの変数が必要です。しかし、静的変数があるとマルチスレッドに影響しますか?
Add、Removeなどのメソッドは .Count
値を更新する必要があるため。たぶん私はそれを怠zyなプロパティにする必要がありますか?
解決
カウンタを実行しているだけの場合、ロックではなくインターロックされた操作もオプションになります。 MSDNには、参照カウントのコンテキストでこの例があります。
他のヒント
少なくとも例を挙げた例では、Interlockedクラスの関数の使用を検討する必要があります。
しかし、静的変数はマルチスレッドに影響しますか?
確かに!共有状態は、定義、マルチスレッドの影響を受けます。
Add、Removeなどのメソッドは.Count値を更新する必要があるため。たぶん私はそれを怠zyなプロパティにする必要がありますか?
アトミックな追加を行うクラスを使用する方がよい( AtomicInteger in java)でロックを回避するための順序:こちらをご覧ください
はい、マルチスレッド環境でシェア変数を更新するときはいつでも、それらの更新をロックでラップする必要があります。
所属していません StackOverflow