2011-08-26 38 views
0

這並沒有發生在我身上,但是我發現自己想知道是否將許多不同的異步請求插入到同一個保留的NSMutableDictionaryNSMutableArray 。是否存在兩種不同方法同時插入數據的風險,以及某種程度上接收可變對象會阻止訪問,但一次只能執行一個進程?來自不同異步請求的可變對象的多個I/O

在我的情況下,我有一個異步的HTTP隊列,並且響應從Web返回,它們被解析並插入到相同的NSMutableDictionary中。如果有多個請求執行此操作,可能有幾十個或幾百個請求,是否有可能失敗的風險,因爲它們都與同一對象同時進行交互?

回答

0

當兩個線程可以同時改變數據時總會有風險。對於最簡單的情況下,你可以使用同步像這樣:

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

對於更復雜的情況下someMutabelArray可以從許多不同的方法來修改你需要使用一個NSLock或其他類的一個符合NSLocking協議最適合您的需求。