> From: Peter Dimov [mailto:pdimov@mmltd.net]
> Sent: 06 August 2002 14:21

> From: "Pete Becker" <petebecker@acm.org>
> > In C++ we have automatic initialization of static objects,
> so there is
> even
> > less need for once functions.
>
> We have dynamic initialization of static mutex objects, but
> we do not have
> static initialization of mutex objects. Hello initialization order.

On POSIX, you can statically initialize a mutex, as mutexes are POD.

On Windows, mutexes are always dynamically initialized. However, you can ensure they are only initialized once by using named mutexes.

I am sure that other platforms have ways of achieving the same aim.

> > Making them more powerful doesn't seem
> > productive, since they will rarely be needed in well-designed code.
>
> The 'powerful' once function and a statically initialized mutex are
> equivalent in expressive power; I can do either given the other.

Agreed. You can also achieve both given a special-case once function (such as win32 named mutex creation).

Anthony