The documentation for properties in Obj-C 2.0 say that atomic properties use a lock internally, but it doesn’t document the specifics of the lock. Does anybody know if this is a per-property lock, a per-object lock separate from the implicit one used by @synchronized(self), or the equivalent of @synchronized(self)?
The documentation for properties in Obj-C 2.0 say that atomic properties use a lock
Share
The lock used by atomic @properties is an implementation detail–for appropriate types on appropriate platforms, atomic operations without a lock are possible and I’d be surprised if Apple was not taking advantage of them. There is no public access to the lock in any case, so you can’t @synchronize on the same lock. Several Apple engineers have pointed out that atomic properties do not guarantee thread safety; atomic properties only guarantee that gets/sets of that value are atomic. For correct thread safety, you will have to make use of higher-level locking or synchronization and you almost certainly would not want to use the same lock as the synthesize getter/setter(s) might be using.