Re: Thread and sleep
Re: Thread and sleep
- Subject: Re: Thread and sleep
- From: Brendan Younger <email@hidden>
- Date: Tue, 18 Jan 2005 10:51:15 -0600
Yes, of course there's a better way. Polling the state of a button
(especially from a different thread, remember the AppKit is not
thread-safe) is ridiculously wasteful. Set the action of the button to
be -(void)wakeThread:(id)sender and code it like this:
NSConditionLock* lock; // lock is an instance variable
- (void)wakeThread:(id)sender {
[lock lock];
[lock unlockWithCondition:[sender state]];
}
and in your worker thread, do this:
// These two calls replace the while() loop below
[lock lockWhenCondition:1];
[lock unlockWithCondition:0];
// Do stuff here
Brendan Younger
On Jan 18, 2005, at 10:39 AM, Peter Karlsson wrote:
Dear list!
I'm running a second thread and I want the thread to sleep until a
NSButton
is pressed. Right now I'm checking the state of the button and if it's
not
pressed I sleep for a while and repeat everything until the button is
pressed. Then the thread continue. Code fragment:
while ([myButtonOutlet state] != 1)
{
usleep(100000);
}
But it seems that this will not work if I do it more then one time in a
row. I must click the button twice for some reason sometimes to make
the
thread continue. I don't know why.
Is there another and better way to do this?
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden