首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果使用GCD,是否需要声明属性原子?

如果使用GCD,是否需要声明属性原子?
EN

Stack Overflow用户
提问于 2015-06-12 17:46:06
回答 1查看 483关注 0票数 1

大中央调度是否关心原子和非原子关键字,还是我们必须指定原子?

我知道属性声明中的原子关键字和非原子关键字将生成不同的setter和getter,原子将是线程安全的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-12 19:17:35

使用atomic是同步从多个线程中使用的属性的一种方法。但是,有许多机制可以同步来自多个线程的访问,而atomic是一个实用程序非常有限的机制。我建议您参考线程编程指南中的同步章节来更全面地讨论备选方案(甚至不能讨论其他当代模式,例如GCD串行队列和带有自定义并发队列的读取器模式)。

总之,atomic本身既不需要也不足以确保线程安全。一般来说,它在处理一些简单的基本数据类型(Booleans,NSInteger)时有一些有限的效用,但是在处理更复杂的逻辑或处理可变对象时是不够的。

简而言之,不要假设无论何时使用GCD都应该使用atomic。事实上,如果您使用GCD,这通常会避免对atomic的需求,实际上,这将与GCD一起对性能产生不必要和不利的影响。因此,如果您有从多个线程访问的某些属性,则应该同步它,但是选择使用哪种同步技术是特定情况的具体细节的函数,而GCD通常是一个性能更好、更完整的解决方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30809235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档