2011-08-26 36 views
0

这并没有发生在我身上,但是我发现自己想知道是否将许多不同的异步请求插入到同一个保留的NSMutableDictionaryNSMutableArray 。是否存在两种不同方法同时插入数据的风险,以及某种程度上接收可变对象会阻止访问,但一次只能执行一个进程?来自不同异步请求的可变对象的多个I/O

在我的情况下,我有一个异步的HTTP队列,并且响应从Web返回,它们被解析并插入到相同的NSMutableDictionary中。如果有多个请求执行此操作,可能有几十个或几百个请求,是否有可能失败的风险,因为它们都与同一对象同时进行交互?

回答

0

当两个线程可以同时改变数据时总会有风险。对于最简单的情况下,你可以使用同步像这样:

@synchronized (self) { 
    [someMutabelArray addObject:someObject]; 
} 

对于更复杂的情况下someMutabelArray可以从许多不同的方法来修改你需要使用一个NSLock或其他类的一个符合NSLocking协议最适合您的需求。