It should be more like:

        //create timer
        //add timer to runloop

CFRunLoopRun(); //code blocks here (not really since the loop is running) until runloop exits due to no longer having observers or timers

        //do thread cleanup and exit

When you start a new thread it has a run loop but it's not running and so anything that handles events and whatnot needs the run loop running to process these events. So once you set up all your timers, event handlers, observers, you then finally need to start (run) the loop so it can work its magic. If you sleep or otherwise block a thread (like you did with sleep), it will sit there and do nothing else including no run loop processing until the block is cleared.


On Feb 20, 2009, at 5:23 PM, Ken Thomases wrote:

On Feb 20, 2009, at 1:15 PM, Charles E. Heizer wrote:

Since this app is a bit of a scheduler for the tasks it could be running for a while, so for my testing I implemented a while loop to keep it running.

        BOOL isRunning = YES;
        while(isRunning)
        {
                sleep(10);
        }

That's not a run loop. A run loop is a specific concept supported by Cocoa and Core Foundation. Look up CFRunLoop and NSRunLoop.

The above loop won't help in the cleanup of those framework-created threads, at all.
_______________________________________________

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 arch...@mail-archive.com

Reply via email to