cvs commit: src/share/man/man9 sleep.9

John Baldwin jhb at freebsd.org
Mon Mar 5 15:32:00 UTC 2007


On Monday 05 March 2007 04:36, Robert Watson wrote:
> 
> On Sun, 4 Mar 2007, Greg Lehey wrote:
> 
> > grog        2007-03-04 23:42:58 UTC
> >
> >  FreeBSD src repository
> >
> >  Modified files:
> >    share/man/man9       sleep.9
> >  Log:
> >  Rearrange function descriptions in more logical order.
> >  Be less alarmist about the dangers of abusing wakeup_one().
> 
> How would you feel about language along the lines of:
> 
>    Prior to the introduction of wakeup_one(), using a single wait channel
>    address was possible as long as all sleepers looped around the sleep call
>    re-checking the condition after each wakeup.  However, with the addition 
of
>    wakeup_one(), combining wait channels for multiple purposes may lead 
easily
>    to bugs involving lost wakeups, and is strongly discouraged.  It is
>    recommended that consumers of the sleep(9) programming interface 
carefully
>    follow the convention of using only wait channels associated with memory
>    addresses explicitly allocated for this purpose, and not overload or 
extend
>    the semantics of existing wait channels without careful analysis in order 
to
>    avoid potential channel collisions.  Programmers may find the cv(9)
>    interface easier to use correctly, as it has explicit condition variable
>    data structures.
> 
> That way we combine warnings about potential misuse with a recommendation 
for 
> the cv(9) API.

How about a far simpler sentence:

Programmers should ensure that wait channels are not used for multiple events.

Unless there is wide misunderstanding of this concept (which there doesn't 
seem to be judging from the followups) we shouldn't spend any more length on 
the topic than that.

-- 
John Baldwin


More information about the cvs-src mailing list