1

以下のように値を読み取る、初期化されて入力された Dictionary クラスが既にあります。

public class MyClass
{
    public static Dictionary<string,object> Dictionary { get; set; }

    public object Get(string key) 
    {
        return Dictionary[key];
    }

    public List<object> Get(object type) 
    {
        return Dictionary.Where(d=>d.Value == type);
    }
}

ご覧のとおり、値を読み取っただけのケースは2つしかありません。上記のコードについてスレッド化されたアプリに悪い副作用がない場合は、パフォーマンスが向上するため、ConcurrentDictionary を使用する代わりに Dictionary を使用することをお勧めします。

4

3 に答える 3

1

スレッドがディクショナリを変更しているときに問題が発生します。

たとえば、同時に、いくつかの値を変更thread aしながら辞書から読み取ってthread bいます。Thread a彼の読み取りでいくつかの変更された値を取得します。

あなたの場合、常に辞書から読んでいるので、問題はありません。

于 2013-10-07T07:39:35.053 に答える
0

マルチスレッド管理は、データの変更(更新と書き込み) 中の競合状態と競合を解決するためのものですが、単純な読み取りのために、辞書の構築で既に行ったマルチスレッドに飛び込む前に、マルチスレッドの管理を避けることができます。スレッド化されたアクセス。

于 2013-10-07T07:47:37.543 に答える