Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2001-09-27 06:38:49


From: "Scott McCaskill" <scott_at_[hidden]>
> > And both signal() and broadcast() are meaningful for what is done.
>
> broadcast is ok, signal is not. As I explained earlier, the meaning of
the
> word signal does NOT connotate a one-to-one relationship between signaller
> and signalled, and for that reason it is a poor counterpart to broadcast.

I think that your arguments (in general) are good and convincing.

However, most of them are somewhat missing the point.

You have built

* a strong case for "good" names (in general);
* a strong case against signal/broadcast;
* a strong case against join (!);

but you don't have a case for notify_one/notify_all. At least not yet.

Here's a big red target to practice on:

A case against notify_one/notify_all:

1. Bad POSIX names are better than bad non-POSIX names.

2. What is being notified? The condition variable or the thread(s)?

3. Why burden the common case with a (misleading) _one suffix, imposing a
notational penalty on every programmer that doesn't need notify_all?

4. What, exactly, is the major difference between 'notify' and 'signal'?

5. How does 'notify' convey that its primary effect is to unblock a(ll)
thread(s)?

6. Why force programmers to learn two different names for the same
operation?

--
Peter Dimov
Multi Media Ltd.

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk