I'll have to look into that, but if the thread waits (without any timeslices) for the cond_signal from the other thread, that would limit it to watching only 1 thread. The way I envisioned it, the controlling thread could ask many other threads to fill their buffers simultaneously, and then go into a loop to harvest them as they come in, and still do other things as well, like asking for more buffer-filling.
| [reply] |
but if the thread waits (without any timeslices) for the cond_signal from the other thread, that would limit it to watching only 1 thread.
No, that is not so. The variable upon which the cond_wait() is waiting can be cond_signal()ed from any thread (that has a lock on the variable).
Also, if more than one thread are in a cond_wait() state on the same variable, one of them (non-determanistically) will be awoken.
You can also signal a variable using cond_broadcast(), in which case all threads currently blocking on that variable will be woken up, rather than just one.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] [select] |