質問

不変のクラスをいくつか設計していますが、インスタンスの総数を取得するには、 .Count などの変数が必要です。しかし、静的変数があるとマルチスレッドに影響しますか?

Add、Removeなどのメソッドは .Count 値を更新する必要があるため。たぶん私はそれを怠zyなプロパティにする必要がありますか?

役に立ちましたか?

解決

カウンタを実行しているだけの場合、ロックではなくインターロックされた操作もオプションになります。 MSDNには、参照カウントのコンテキストでこの例があります。

他のヒント

少なくとも例を挙げた例では、Interlockedクラスの関数の使用を検討する必要があります。

  

しかし、静的変数はマルチスレッドに影響しますか?

確かに!共有状態は、定義、マルチスレッドの影響を受けます。

  

Add、Removeなどのメソッドは.Count値を更新する必要があるため。たぶん私はそれを怠zyなプロパティにする必要がありますか?

アトミックな追加を行うクラスを使用する方がよい( AtomicInteger in java)でロックを回避するための順序:こちらをご覧ください

はい、マルチスレッド環境でシェア変数を更新するときはいつでも、それらの更新をロックでラップする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top