使用4个NSThread将1000个元素(例如整数元素)添加到数组中。如果添加一个对象花费1个单位时间,那么添加1000个对象将花费1000个单位时间。
通过使用4个线程,我希望将其减少到250个单位。
如何使用NSThreads实现这一目标。
谢谢
最佳答案
简短答案:您无法使用NSThread
(或GCD)实现此目标
更长的答案:Objective-C NSArray
类型不是线程安全的,并且不支持并发更新。虽然您可以将NSArray
包装在线程安全的包装器中,以便可以由多个线程安全地对其进行更新,但这样的包装器可以通过序列化更新来实现这一点–因此,您不会节省任何时间(实际上花了一些时间在该线程安全包装器)。
也许您的意思有所不同:如果不是您希望重叠的项目添加到数组中,而是在添加之前生成这些项目,那么您可以使用NSThread
或GCD进行操作,前提是您还要包装在线程安全的包装器中。
当前建议进行并发操作的方法是使用GCD,也称为Dispatch。如果您继续阅读,您将发现如何使用串行队列和屏障操作使阵列成为线程安全的,以及如何使用并发队列来运行4个任务。
高温超导
关于ios - NSThread用于并发操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55809105/