Re: How to implement readonly property
Re: How to implement readonly property
- Subject: Re: How to implement readonly property
- From: Steve Sisak <email@hidden>
- Date: Sat, 08 Dec 2012 13:06:09 -0500
At 8:35 AM -0800 12/8/12, Kyle Sluder wrote:
On Dec 7, 2012, at 8:38 PM, Marco S Hyman <email@hidden> wrote:
On Dec 7, 2012, at 8:18 PM, Steve Sisak <email@hidden> wrote:
I'm interested if there are an any issued I'm missing in the
Obj-C, @synchronized(self), instance variable case.
Your pattern can fail if this line
_someDictionary = temp;
isn't atomic.
The real issue with double-checked locking is whether the compiler
promises to generate the proper memory barriers such that other
threads are guaranteed to see the assignment to _someDictionary
*after* the object has been constructed. C makes no such guarantee;
other threads might see a non-nil value for _someDictionary before
the first thread is done constructing the object.
I'm fairly sure that @synchronized, being a compiler built-in, rather
than a function, makes that guarantee -- specifically the the values
of instance variables can change across entry and exit of an
@synchronized block.
Further, if writes were not complete at the end of the block, the
construct would be essentially useless for its intended purpose.
In any case, removing the outer check makes the code correct
regardless of compiler guarantees.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden