NSThread用于并发操作

时间:2019-04-23 10:23:23

标签: ios objective-c nsthread

使用4个NSThread将1000个元素(例如整数元素)添加到数组中。如果添加一个对象花费1个单位时间,那么添加1000个对象将花费1000个单位时间。 通过使用4个线程,我希望将其减少到250个单位。 如何使用NSThreads实现这一目标。 谢谢

1 个答案:

答案 0 :(得分:1)

简短的回答:您无法使用NSThread(或GCD)来实现这一点

更长的答案:Objective-C NSArray类型不是线程安全的,并且不支持并发更新。尽管您可以将NSArray包装在线程安全的包装器中,以便可以由多个线程安全地对其进行更新,但这样的包装器可以通过序列化更新来实现这一点–因此,您不会节省任何时间(而实际上花费了一些在该线程的安全包装中。

也许您的意思有所不同:如果不是在数组中添加要重叠的项目,而是在添加之前生成这些项目,则可以使用NSThread或GCD 提供,您还可以将NSArray包裹在线程安全的包装器中。

当前建议的并发操作方式是使用GCD,也称为Dispatch。如果您继续读下去,将会发现如何使用串行队列和屏障操作使数组线程安全,以及如何使用并发队列来运行4个任务。

HTH