使用4个NSThread将1000个元素(例如整数元素)添加到数组中。如果添加一个对象花费1个单位时间,那么添加1000个对象将花费1000个单位时间。 通过使用4个线程,我希望将其减少到250个单位。 如何使用NSThreads实现这一目标。 谢谢
答案 0 :(得分:1)
简短的回答:您无法使用NSThread
(或GCD)来实现这一点
更长的答案:Objective-C NSArray
类型不是线程安全的,并且不支持并发更新。尽管您可以将NSArray
包装在线程安全的包装器中,以便可以由多个线程安全地对其进行更新,但这样的包装器可以通过序列化更新来实现这一点–因此,您不会节省任何时间(而实际上花费了一些在该线程的安全包装中。
也许您的意思有所不同:如果不是在数组中添加要重叠的项目,而是在添加之前生成这些项目,则可以使用NSThread
或GCD 提供,您还可以将NSArray
包裹在线程安全的包装器中。
当前建议的并发操作方式是使用GCD,也称为Dispatch。如果您继续读下去,将会发现如何使用串行队列和屏障操作使数组线程安全,以及如何使用并发队列来运行4个任务。
HTH