使用4 NSThread将1000个元素(比如整数元素)添加到数组中。如果添加一个对象需要1个单位的时间,那么添加1000个对象将花费1000个单位的时间。通过使用4个线程,我想将其减少到250个单位。如何使用NSThreads实现这一目标。谢谢
简短的回答:你无法使用NSThread
(或GCD)实现这一目标
更长的答案:Objective-C NSArray
类型不是线程安全的,不支持并发更新。虽然你可以将一个NSArray
包装在一个线程安全的包装器中,这样它就可以通过多个线程安全地更新,这样包装器可以通过序列化更新来实现 - 所以你不需要节省任何时间(并且实际上花费了一些线程)安全包装)。
也许你的意思是不同的东西:如果不是你想要重叠的数组添加项目,而是在添加之前生成这些项目,那么你可以用NSThread
或GCD做到这一点,前提是你还将NSArray
包装在一个线程中 - 安全包装。
目前推荐的并发操作方法是使用GCD,即Dispatch。如果你读到它,你会发现如何使用串行队列和屏障操作使数组线程安全,以及如何使用并发队列运行4个任务。
HTH