0

2つのスレッドがあります。スレッド1はNSMutableDictionaryにキーと値のペアを設定し、後でその値を読み取り、スレッド2は別のキーと値のペアで同じことを行います。 キーは異なり、各スレッドは設定したキーと値のペアのみを読み取ります。しかし、一方のスレッドは他方のスレッドが書き込みを行っている間は読み込めます。スレッドセーフティ:異なるNSMutableDictionaryエントリにアクセスする2つのスレッド

私の質問は、2つのスレッドが同じNSMutableDictionaryの異なるエントリに同時にアクセスしている場合、NSMutableDictionaryを保護する必要があるかどうかです。 (NSMutableDictionary全体がスレッドによって「主張」されているか、個々の項目の操作が独立していますか?)

+0

HTTPSを参照のObjective-Cから@synchronizedディレクティブを使用して、オブジェクトがディレクティブに渡された辞書自体を使用することを行う一つの簡単な方法://stackoverflow.com/questions/1986736/nsmutabledictionary-thread-safety – rmaddy

答えて

0

辞書のようにコンテナオブジェクトを変更/変更することはできません。

ディクショナリのキーと値のペアを設定すると、ディクショナリが変更されます。各キーと値のペアは独立したエンティティではありません。

辞書を保護しなければならない、またはクラッシュするなどの望ましくない動作が発生する可能性があります。

@synchronized(myDict) { 
    valueFromDict = myDict[@"someKey"]; 
} 

、別のスレッドから:

@synchronized(myDict) { 
    myDict[@"someOtherKey"] = someValue; 
} 
関連する問題