On Feb 6, 2009, at 6:23 PM, Michael Ash wrote:
It's one less ivar to worry about. I retro-fitted the lock to one
other
object I wanted to make thread-safe, only because I couldn't think
of a way
of doing this safely with @synchronized(), and thought I'd ask before
committing. And now I'm wondering how @synthesize does atomic sets
internally...
I'm pretty sure it just does @synchronized(self) or the equivalent.
Actually, no it doesn't -- @synchronized is a comparatively
heavyweight operation, and @synchronized(self) would represent an
object-level lock. The implementation of synthesized atomic accessors
is deliberately not documented since it may be subject to change,
however locking is performed in a lighter-weight fashion and on a per-
property basis.
Nevertheless:
One last thing: creating thread-safe getters and setters is almost
never the right thing to do. It's never sufficient and rarely required
to achieve overall thread safety. There are cases where it's useful
but they're rare. It's much better, in most cases, to concentrate on
synchronizing larger pieces of your object graph instead.
this is absolutely true (<http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_6.html
>).
mmalc
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]