Boost logo

Boost Users :

From: Howard Hinnant (hinnant_at_[hidden])
Date: 2005-08-29 15:00:03

On Aug 29, 2005, at 3:47 PM, Peter Dimov wrote:

> I haven't studied the threadmon code in detail, though. It might be
> possible
> to destroy the threadmon mutex safely at some point during shutdown.

I haven't studied threadmon either. But from the sounds of it, you may
want to consider a "phoenix" singleton, nicely documented in Andrei
Alexandrescu's MC++D. One hitch to get a working phoenix singleton is
to have a working atexit function (and I mean really working
correctly). There was a lwg dr report on it:

which has now received TC status, meaning it is a normative part of the
C++03 standard. I have no information on how well the various
platforms conform to the standard in this regard (it can be tested for

The idea is fairly simple. The singleton factory keeps state that
tells it whether the singleton is constructed or not. When the
singleton gets constructed, it registers a "destructor" with atexit.
If after the atexit runs the destructor, the singleton is needed again,
then it recreates itself, and re-registers with atexit. A correctly
working atexit will properly run this newly registered function as it
continues to process the atexit chain.


Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at