gpt4 book ai didi

ios - NSOperation对象(线程环境)中的非原子属性,何时使用?

转载 作者:行者123 更新时间:2023-12-01 18:03:25 24 4
gpt4 key购买 nike

我仍然喜欢使用NSOperation在线程环境中工作,而我有兴趣了解如果将nonatomic子类化,使用NSOperation属性是否值得?

如果将defaultQueue设置为1,那么非原子的额外开销是否值得?如果每个操作队列要执行1个以上的线程,是否可能需要?

感谢您提供解决方案,以更好地理解线程环境中的此属性。

最佳答案

如果您有一个对象(或该对象的属性),可以保证不会同时从多个线程访问该对象,则可以通过使用非原子操作来避免原子访问该属性的潜在开销。在最简单的创建操作并将其放入NSOperationQueue队列中的情况下,每个NSOperation实例要么在调用线程中进行设置,要么在单个后台线程中运行。因此在任何时候,只有一个线程可以访问它。

非原子何时有用的更普遍的问题部分取决于您是否在启用垃圾收集的情况下运行。根据Objective-C发行说明:

Access to properties is atomic by default. This is trivial under GC for almost everything and also trivial under non-GC for everything but objects and structures. In particular atomic access to retained objects under non-GC conditions can be expensive. As such, a nonatomic property attribute is available.

关于ios - NSOperation对象(线程环境)中的非原子属性,何时使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/841954/

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