Link to home
Start Free TrialLog in
Avatar of chrille_p
chrille_p

asked on

Create a block / wait function?

I am looking for a way to create a function that, like the sockets accept function,
blocks / waits untill a specific variable is set or a specific function is called.
At the moment I am using the very system expensive code:
while(!input);

I need a function that can be called inside a thread procedure to keep the thread from consuming all of the processors power.

Any ideas?



Avatar of itsmeandnobodyelse
itsmeandnobodyelse
Flag of Germany image

On Windows platform use

    Sleep(1);    // wait 1 millisecond

in your loop.

Regards, Alex
OS/2 you have to use DosSleep, and *NIX it is sleep (as far as i remember).

Regards, Alex
ASKER CERTIFIED SOLUTION
Avatar of itsmeandnobodyelse
itsmeandnobodyelse
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of chrille_p
chrille_p

ASKER

Im not looking for a function that waits for a couple of seconds.
What I want is a thread-procedure (A) that waits untill function (B) is called...

I could use sleep() in my loop and check a flag every n second, but that would make
the reaction of my function slow. I want it to stop waiting and continue its work
directly when (B) is called.

/Chrille
WaitForSingleObject is perfect.

Thanks!

/Chrille
Depending on the OS, there may be a Sleep() function that is calibrated in milliseconds.

Otherwise you could find some API, any API, that will do a task-switch for you.
On Windows that puts your thread to sleep for about 20-30 milliseconds, a nice ballpark sleep time.

>> Im not looking for a function that waits for a couple of seconds.

Ok, but before using
 
    while(!input);

you should have

    while(!input) { sleep(1); }


>> What I want is a thread-procedure (A) that waits untill function (B) is called...

You could use a mutex that gets locked by your main thread, then your thread is waiting on the mutex to be unlocked, what is done at the beginning of function B .

What OS are you working on?

Regards, Alex