• 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 make a RunLoop patiently do nothing?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to make a RunLoop patiently do nothing?


  • Subject: Re: How to make a RunLoop patiently do nothing?
  • From: "Michael Ash" <email@hidden>
  • Date: Wed, 3 Dec 2008 23:24:33 -0500

On Wed, Dec 3, 2008 at 11:11 PM, Sean McBride <email@hidden> wrote:
> You said you wanted your thread to 'patiently wait for
> performSelector:onThread: calls'?  When do you want it to stop waiting?
> If at app quit time, then just leave it around.  If earlier, then just
> send it a message to clean itself up (dealloc memory, etc.) and
> invalidate the timer.  Then you are back to having no runloop sources
> and voila.

Don't do this. When the docs say that your runloop will exit when no
sources are installed on the runloop, this is a warning, not a guide
for how to make it exit. The system may install its own sources and
not remove them just because you want to exit, in which case your
thread will run forever. Worse, this may happen on an OS release later
than the one you tested with, causing your app to leak threads after
you've already shipped it.

The best way would probably be to do something like this:

NSDate *distantFuture = [NSDate distantFuture];
NSThread *myThread = [NSThread currentThread];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
while(![myThread isCancelled])
    [runLoop runMode:NSDefaultRunLoopMode beforeDate:distantFuture];

Then to kill the thread, do [thread cancel] and then you'll have to
jog its runloop, so fire off a dummy message to it as well to make it
fall out and hit the while again and exit cleanly.

Mike
_______________________________________________

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 make a RunLoop patiently do nothing?
      • From: "Adam R. Maxwell" <email@hidden>
References: 
 >Re: How to make a RunLoop patiently do nothing? (From: Roland King <email@hidden>)
 >Re: How to make a RunLoop patiently do nothing? (From: Chris Idou <email@hidden>)
 >Re: How to make a RunLoop patiently do nothing? (From: "Sean McBride" <email@hidden>)

  • Prev by Date: Re: Special Characters Edit Menu Item
  • Next by Date: Windows-Friendly Attachments
  • Previous by thread: Re: How to make a RunLoop patiently do nothing?
  • Next by thread: Re: How to make a RunLoop patiently do nothing?
  • Index(es):
    • Date
    • Thread