【发布时间】:2012-03-23 17:37:04
【问题描述】:
我正在编写一些代码来在客户端和服务器之间同步对象。它涉及一堆带有回调块的 HTTP 调用(我不是自己做的,而是使用 Parse 库)。我想等到完成一组这些调用,然后再采取进一步的行动。在此过程中,我需要将每次调用的结果存储在某处。
我能想到的最简单的方法是保留一个计数器和一个集合——类似于 NSMutableArray 或 NSMutableSet。每次 HTTP 操作完成时,我都会将其结果存储在集合中并递增计数器。然后我检查计数器,如果它等于操作总数,我继续下一步。 (我建议使用计数器而不是集合的大小,因为我可能不需要为每个 HTTP 调用存储一个对象。)
但我猜我遇到了线程安全问题:当两个调用同时返回并且都尝试添加到集合和/或增加计数器时会发生什么?
这里有什么解决办法?
谢谢!
【问题讨论】:
标签: ios cocoa-touch thread-safety objective-c-blocks