> From: Peter Dimov [mailto:pdimov@mmltd.net]
> Sent: 07 August 2002 12:01
> From: "Anthony Williams" <anthwil@nortelnetworks.com>
> >
> > However, I'm not sure we want POSIX semantics --- it poses
> an unnecessary
> > burden on the users to have to specify a static initializer
> or call a
> > dynamic init function, it is much preferable to just have
> Mutex() do the
> > Right Thing in all cases.
>
> Is this possible? Without language/memory architecture
> support, I mean.

See my other post for Win32Mutex and POSIXMutex skeletons that just have a default constructor.

My point is that you can have thread-safe lazy dynamic initialization, which works for static objects without causing init-order problems, if you use the appropriate primitives for each platform. On POSIX, pthread_once provides such a mechanism; on Win32, Named Mutexes provide such a mechanism. I expect that other platforms have other primitives, but I would be surprised if there wasn't _any_ mechanism for this on a particular platform.

However, you are right that it requires some form of platform support, just not necessarily at the language level.

Anthony