Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2006-07-02 15:42:07

Sean Parent wrote:

> ONCE <>
> The STATIC_INSTANCE stuff might be able to be removed - this was
> done for the Mac where static initializer on DLLs were getting
> executed on a thread after load so other functions in the compilation
> unit could be executed concurrently. That may have been fixed (I
> haven't tracked the issue) - this library would be a good addition to
> Boost threads.

adobe::call_once should really be folded into boost::call_once, the rest
would require more thought.

> Counter <>
> If boost would surface the lightweight mutex used in shared_ptr -
> this would go away. (This is a heavyweight one - as I'm counting on
> Boost providing a lightweight one in the future :-) ).

The closest boost equivalent is boost::detail::atomic_count. We really need
an atomic operations library to isolate the platform-specific functionality
that is currently scattered all over the place...

As for lightweight_mutex, it should ideally be subsumed by boost::mutex;
there is no real reason for boost::mutex to be heavyweight (and in order to
replace lightweight_mutex, it should be header-only because of its "critical
piece of infrastructure" status.)

One subtlety when specifying a counter type such as counter_t is that its
memory synchronization guarantees need to be documented. No msync on
increment, full msync on decrement is probably the simplest option that
supports a reference-counted pointer and doesn't sacrifice performance too
much; a slightly more refined approach is to guarantee acquire semantics on
a decrement with new value zero, release semantics otherwise. Copy on write
requires even less.

Boost list run by bdawes at, gregod at, cpdaniel at, john at