2

NSMutableDictionary(つまり)に同時に書き込みたいスレッドが複数あるsetObject:forKey:場合、スレッドが異なるキーと値のペアを書き込むことを保証できる場合でも、ディクショナリで同期する必要がありますか?はいの場合、辞書がどのように壊れるか説明できますか?

4

1 に答える 1

4

NSMutableDictionaryはスレッドセーフではないため、同時書き込みと、書き込みと同時に進行する可能性のある読み取りの周りに同期を追加する必要があります。異なるキーに書き込んでいるという事実はあまり役に立ちません。新しいキーを追加すると実装のサイズが変更され、以前に割り当てられたすべての内部ストレージが無効になる場合があります。

書き込む予定のすべてのキーがすでにディクショナリに存在し、同時削除が行われていない場合は、幸運になる可能性があります。ただし、このアプローチには反対することを強くお勧めします。

于 2013-02-20T01:06:40.533 に答える