将多个不同的键值对同时插入NSMutableDictionary是否安全?

时间:2013-02-20 01:02:29

标签: objective-c thread-safety

如果我有多个线程可能想要同时写入NSMutableDictionary(即setObject:forKey:),我是否需要在字典上同步,即使我可以保证线程将写入不同的密钥值对?如果是的话,你能解释一下字典是如何破解的吗?

1 个答案:

答案 0 :(得分:4)

NSMutableDictionary is not thread-safe,因此您需要在并发写入周围添加同步,以及可能与写入同时进行的读取。您写入不同密钥的事实没有多大帮助:实现可能会在添加新密钥时调整大小,使之前分配的所有内部存储无效。

如果您计划写入的所有密钥已经存在于字典中,并且没有进行并发删除,那么您可能会很幸运。但是,我强烈建议不要采用这种方法。