On Thu, 2002-03-07 at 17:01, simonwlb wrote:
I'm using thread::yield() in my multi-threaded cross-platform application to avoid "CPU burn". <snip> { if( m_x->isReady() ) doSomething(); <..>
If the answer is "you should almost never poll like that - try to use mutexes etc. as much as possible" please say so (I'm a newbie to threads)!
The answer is actually probably conditionals plus mutexes. Presumably one thread is doing something, and other threads are waiting for it to be ready. This is a standard producer/consumer model. The consumers all wait on a condition variable, and the producer grabs the mutex, signals the condition variable, and then releases the mutex. One (or all, depending on how you signal) of the threads will wake up to deal with the signal. The advantage of this is the threads waiting on the signal are truly asleep, using 0% cpu. If you were using pthreads, I'd suggest looking up pthread_cond_signal and it's bretheren. I unfortunately don't know Boost's equivalents, but I'm sure they're similar. -- Colin Fox cfox@crystalcherry.com CF Consulting Inc. GPG Fingerprint: D8F0 84E7 E7CC 5C6C 9982 F1A7 A3EB 6EA3 BC97 572F [Non-text portions of this message have been removed]