gpt4 book ai didi

ios - NSThread 用于并发操作

转载 作者:行者123 更新时间:2023-11-28 23:33:08 27 4
gpt4 key购买 nike

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

最佳答案

简短回答:您不能使用 NSThread(或 GCD)实现此目的

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

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

目前推荐的并发操作方式是使用 GCD,又名 Dispatch。如果您仔细阅读,您将了解如何使用串行队列和屏障操作使数组线程安全,以及如何使用并发队列运行 4 个任务。

HTH

关于ios - NSThread 用于并发操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55809105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com