Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Feb 2011 13:26:18 -0800
From:      Yuri <yuri@rawbw.com>
To:        freebsd-hackers@freebsd.org
Cc:        Garrett Cooper <yanegomi@gmail.com>, standards@freebsd.org, davidxu@freebsd.org
Subject:   Re: Is pthread_cond_signal(3) man page correct?
Message-ID:  <4D6AC17A.7020505@rawbw.com>
In-Reply-To: <4D6ABA14.80208@rawbw.com>
References:  <4D6ABA14.80208@rawbw.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to 
> "freebsd-hackers-unsubscribe@freebsd.org"
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D6AC17A.7020505>