这还没有发生在我身上,但我发现自己想知道许多不同的异步请求是否存在将数据插入到同一个保留的NSMutableDictionary
或NSMutableArray
中的问题。是否存在两种不同方法同时插入数据的风险,并且某种方式接收可变对象会阻止访问,除了一次只有一个进程?
在我的情况下,我有一个异步HTTP队列,当响应从Web返回时,它们被解析并插入到同一个NSMutableDictionary
中。如果您有多个请求这样做,可能有几十个或几百个,是否有可能因为它们同时与同一个对象进行交互而失败的风险?
答案 0 :(得分:0)
当两个线程可以同时改变数据时,总会存在风险。对于最简单的情况,您可以使用这样的同步:
@synchronized (self) {
[someMutabelArray addObject:someObject];
}
对于可以从许多不同方法修改someMutabelArray
的更复杂情况,您需要使用NSLock
或符合最适合您的NSLocking
协议的其他类别之一需要。