NSThread用于并发操作

问题描述 投票:0回答:1

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

ios objective-c nsthread
1个回答
1
投票

简短的回答:你无法使用NSThread(或GCD)实现这一目标

更长的答案:Objective-C NSArray类型不是线程安全的,不支持并发更新。虽然你可以将一个NSArray包装在一个线程安全的包装器中,这样它就可以通过多个线程安全地更新,这样包装器可以通过序列化更新来实现 - 所以你不需要节省任何时间(并且实际上花费了一些线程)安全包装)。

也许你的意思是不同的东西:如果不是你想要重叠的数组添加项目,而是在添加之前生成这些项目,那么你可以用NSThread或GCD做到这一点,前提是你还将NSArray包装在一个线程中 - 安全包装。

目前推荐的并发操作方法是使用GCD,即Dispatch。如果你读到它,你会发现如何使用串行队列和屏障操作使数组线程安全,以及如何使用并发队列运行4个任务。

HTH

© www.soinside.com 2019 - 2024. All rights reserved.