• 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: Custom setter for atomic property
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Custom setter for atomic property


  • Subject: Re: Custom setter for atomic property
  • From: Bill Bumgarner <email@hidden>
  • Date: Thu, 28 Oct 2010 10:52:44 -0700

On Oct 28, 2010, at 9:16 AM, Jonny Taylor wrote:
>> Note that sending notifications to other threads while holding locks in the current thread (or queue) is rife with danger & fragility.  It is great way to create deadlocks and, if not, to end up with a solution that has all the maintenance costs of multi-threaded code combined with all the performance wins of single threaded execution....
> My situation is that I am receiving camera frames on a background thread, and need a way of informing various windows that their displays should be updated to reflect the fact that a new frame has been received. This GUI work needs to be done on the main thread (I believe...). In addition, I take advantage of the coalescing features of notifications to avoid unnecessary updates. Thus I am keeping the currentFrame variable up to date in a threadsafe manner, and then after updating it (and releasing the lock) I post a notification to the main queue, with coalescing. Does that sound like a reasonable approach?
>
> I definitely need to access currentFrame in a threadsafe manner, but hopefully my description shows that the multithreaded relationship for the notifications and variable updates is not there for performance reasons, if that makes sense. I am more than aware of the trouble multithreading brings, but the nature of the code makes it pretty unavoidable.

The best way to access something in a threadsafe manner is to only access it from one thread at a time without locking.

And the best way to do that is to perpetuate the notion of thread ownership.   When thread A is accessing the object, thread B not only does not access the object, thread B doesn't even have a reference to the object in its scope of execution.  Not ever.

When B -- likely the main thread -- needs to access the object, then A passes ownership to B, typically via GCD, operations or -performSelectorOnMainThread:

b.bum

_______________________________________________

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

References: 
 >Custom setter for atomic property (From: Jonny Taylor <email@hidden>)
 >Re: Custom setter for atomic property (From: Bill Bumgarner <email@hidden>)
 >Re: Custom setter for atomic property (From: Jonny Taylor <email@hidden>)

  • Prev by Date: Re: CoreDataGeneratedAccessors
  • Next by Date: [iPhone] UIButton and Device Orientation problem in MainWindow.
  • Previous by thread: Re: Custom setter for atomic property
  • Next by thread: [iPhone] UIButton and Device Orientation problem in MainWindow.
  • Index(es):
    • Date
    • Thread