【发布时间】:2017-06-09 04:47:12
【问题描述】:
我正在开发一个 iOS 应用程序,我在我的应用程序中发现了一些非原子 BOOL 和 NSInteger 属性的竞争条件。我很好奇,如果这些得到修复真的很重要吗?就像,如果我同时对BOOL 进行读取和写入,并且我不在乎它使用BOOL 的旧值还是新值,只要它使用其中一个值,不是可以吗?如果写入时 BOOL 的开始和结束值为 0 时读取结果为 1,我会感到惊讶。
【问题讨论】:
-
除了特定实现的细节之外,这个问题不太可能有一个合理的一般性答案。
-
我已经澄清这是一个 iOS 特有的问题
-
这并没有真正澄清任何事情。您基本上是在问“在某些情况下,某些竞争条件是否重要,除了您之外没有人可以检查”。谁知道?
-
另一种提出这个问题的方式,因为您似乎没有仔细阅读它,如果开始和结束值相同,并发读取是否保证获得该值?
-
我的感觉是,如果你发现了一个问题,你应该在它咬你之前解决它。从 2017 年开始使用 Xcode 9 进行 Wwdc 视频 404 调试有大约 10 分钟接近尾声,专门介绍 Xcode 9 如何为您识别竞争条件。他们显然很重视。
标签: ios thread-safety atomic