• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: How to implement readonly property
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • Follow-Ups:
    • Re: How to implement readonly property
      • From: Kyle Sluder <email@hidden>
    • Re: How to implement readonly property
      • From: Kyle Sluder <email@hidden>
References: 
 >Re: How to implement readonly property (From: Steve Sisak <email@hidden>)
 >Re: How to implement readonly property (From: Ken Thomases <email@hidden>)
 >Re: How to implement readonly property (From: Steve Sisak <email@hidden>)
 >Re: How to implement readonly property (From: Marco S Hyman <email@hidden>)
 >Re: How to implement readonly property (From: Kyle Sluder <email@hidden>)

  • Prev by Date: Re: delaying document close
  • Next by Date: Re: How to implement readonly property
  • Previous by thread: Re: How to implement readonly property
  • Next by thread: Re: How to implement readonly property
  • Index(es):
    • Date
    • Thread