Is pthread_cond_signal(3) man page correct?

Yuri yuri at
Sun Feb 27 22:08:56 UTC 2011

Forwarding to standards@ and davidxu@ per Garrett Cooper suggestion.

Also I want to add that I came to this question while observing behavior 
consistent with multiple wakeup on FreeBSD-8.1. The heavily 
multi-threaded code that assumes that only one thread can be woken up by 
one pthread_cond_signal call crashes, and the only reasonable 
explanation so far is that more than one threads are actually being 
woken up.


On 02/27/2011 12:54, Yuri wrote:
> On FreeBSD-8.1 this page says:
> The pthread_cond_signal() function unblocks one thread waiting for the 
> condition variable cond.
> On Linux it says:
> The /pthread_cond_signal/() function shall unblock at least one of the 
> threads that are blocked on the specified condition variable /cond/ 
> (if any threads are blocked on /cond/).
> Also HP page 
> ( says: 
> "If there are no threads blocked on /cond/, this function has no 
> effect." And later it says: "It is possible that more than one thread 
> can be unblocked due to a spurious wakeup."
> This is quite confusing: in case nobody is waiting does it block or 
> not? In case other threads are waiting it's really "any arbitrary 
> number of threads are woken up"? Or on FreeBSD it's strictly 1? 
> Shouldn't this be defined in one and only way by POSIX and all 
> POSIX-compliant systems should work exactly the same.
> I think man page should be expanded to give more comprehensive 
> explanation.
> Yuri
> _______________________________________________
> freebsd-hackers at mailing list
> To unsubscribe, send any mail to 
> "freebsd-hackers-unsubscribe at"

More information about the freebsd-standards mailing list