Is pthread_cond_signal(3) man page correct?
Yuri
yuri at rawbw.com
Sun Feb 27 21:26:20 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.
Yuri
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
> (http://docs.hp.com/en/B2355-90130/pthread_cond_signal.3T.html) 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 freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to
> "freebsd-hackers-unsubscribe at freebsd.org"
>
More information about the freebsd-hackers
mailing list