Ios 用于并发操作的NSThread
使用4 NSThread向数组添加1000个元素(比如整数元素)。如果添加对象需要1个时间单位,那么添加1000个对象将需要1000个时间单位。 通过使用4个线程,我想把它减少到250个单位。 如何使用NSThreads实现这一点。Ios 用于并发操作的NSThread,ios,objective-c,nsthread,Ios,Objective C,Nsthread,使用4 NSThread向数组添加1000个元素(比如整数元素)。如果添加对象需要1个时间单位,那么添加1000个对象将需要1000个时间单位。 通过使用4个线程,我想把它减少到250个单位。 如何使用NSThreads实现这一点。 谢谢简短回答:使用NSThread(或GCD)无法实现这一点 详细回答:Objective-CNSArray类型不是线程安全的,不支持并发更新。虽然您可以将NSArray封装在线程安全的包装器中,这样它就可以由多个线程安全地更新,但这样的包装器可以通过序列化更新来实
谢谢简短回答:使用
NSThread
(或GCD)无法实现这一点
详细回答:Objective-CNSArray
类型不是线程安全的,不支持并发更新。虽然您可以将NSArray
封装在线程安全的包装器中,这样它就可以由多个线程安全地更新,但这样的包装器可以通过序列化更新来实现这一点,因此您不会节省任何时间(实际上会在线程安全的包装器中花费一些时间)
也许您的意思不同:如果不是向希望重叠的数组中添加项,而是在添加之前生成这些项,那么您可以使用NSThread
或GCD来完成,前提是您还将NSArray
包装在线程安全包装器中
当前推荐的并发操作方法是使用GCD,即调度。如果您仔细阅读,您将发现如何使用串行队列和屏障操作使阵列线程安全,以及如何使用并发队列运行4个任务
HTH忘记线程。已经是2019年了。