1

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

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

4

4 に答える 4

2

少なくとも、指定した例では、 Interlocked クラスの関数の使用を検討することをお勧めします。

于 2009-05-04T23:30:19.230 に答える
2

カウンターだけなら、ロックではなく連動操作も選択肢の一つかもしれません。MSDN には、参照カウントのコンテキストでこれの良い例があります。

于 2009-05-04T23:30:33.630 に答える
1

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

承知しました!共有状態は、定義上、マルチスレッドによって影響を受けます。

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

ロックを回避するために、アトミックな追加( Java のAtomicIntegerなど)を行うクラスを使用することをお勧めします。こちらをご覧ください。

于 2009-05-04T23:37:49.943 に答える
0

はい、マルチスレッド環境で共有変数を更新するときはいつでも、それらの更新をロックでラップするだけで済みます。

于 2009-05-04T23:28:07.923 に答える