Jim Thompson wrote:

pthread_cond_broadcast() will (attempt) to waken *ALL* threads waiting on that condition variable. If there is more than one, they'll race, and the first one that gets past the mutex 'wins'. pthread_cond_signal() will attempt to waken *one* thread (typically the first
thread waiting on the condition variable.)

What do you mean 'wins'? Maybe I don't understand correctly, but if I have three threads waiting on a conditional, and I do a broadcast on that conditional, they should ALL wake up, right? I mean, I don't see anything to indicate that there's any particular order, but they should all wake up. right? Wait, uh, yeah, that's even what it says in the man page. Whereas pthread_cond_signal wakes up one thread, but if there are multiple threads waiting, there's no provision for determining which one.

Perhaps you're just running into side-effects of the scheduler. It seems to work here (gentoo, 2.6.10 kernel). See the code and output below.
(I'm not bragging on the code, it was quick-n-dirty.)

Ah, man, you're code worked on my machine too. So I must be doing something screwy. I guess I should be happy, because that means I can fix the bug. On the other hand, that means I have to fix the bug.

The Fedora Project officially ended support for Fedora Core 1 (FC1) on September 20th, 2004. FC3 was released November 8, 2004. Maybe you should run FC3 (which is current) .vs a release that is now known as "Fedora Legacy". (http://fedora.redhat.com/)

Yeah, that would be nice. But some of the hardware we have in "the machine" currently only has drivers for the 2.4 kernel, and it's kind of late in the game to start porting and testing, and I am way too busy (and LAZY). Probably on the next instrument.

Jim, you The Man, thank you very much for your time and feedback.

-Charles

Reply via email to