|
|
1
7
原子@properties使用的锁是一个实现细节——对于适当平台上的适当类型,没有锁的原子操作是可能的,如果苹果没有利用它们,我会感到惊讶。在任何情况下都没有对锁的公共访问,因此不能在同一个锁上@synchronize。几个苹果工程师指出原子属性不能保证线程安全;原子属性只保证获取/设置该值是原子的。为了确保正确的线程安全,您必须使用更高级别的锁或同步,而且几乎可以肯定,您不希望使用与合成器getter/setter可能使用的锁相同的锁。 |
|
|
2
9
查看生成的代码(iOS SDK GCC 4.0/4.2 for ARM),
Cocoa with Love: Memory and thread-safe custom property methods 提供了有关如何在中实现它们的一些详细信息 runtime version objc4-371.2 ;显然,在不同的运行时,精确的实现可能会有所不同(例如,在某些平台上,您可以使用原子交换/cas在ivar本身上旋转,而不是使用另一个锁)。 |
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 9 月前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 9 月前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 9 月前 |
|
|
András Takács · Python多线程问题 1 年前 |
|
|
András Takács · Python多线程错误 1 年前 |