On Sep 24, 2008, at 15:15 , Jason Bobier wrote:

Hey folks, I have a runloop on a thread that looks like this:

while (! _cancelled) {
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
                                                
[runloop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
        [pool release];
}

And I put a timer in the loop that sets _cancelled to true, the runloop never stops. What's the proper way to do this?

The run loop only returns from this call when one of the following happens: 1) it has no input sources or timers left; 2) the beforeDate: date expires; or 3) an input source has been triggered and processed.

Timers don't count as input sources, they are handled at a different part of the event loop. Also, even if you haven't added any timers or input sources to the run loop, many of the high-level frameworks (like AppKit) do, so you can't be sure that
the call will return just because you haven't put anything.

Your options, then, are to use a shorter date, as was suggested, or to have an actual input source that gets triggered (the Mach Port Poke), also
suggested already. I just wanted to let you know why this happens :)

HTH, J

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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]

Reply via email to