From: Dayton (mvglen04-cnews_at_[hidden])
Date: 2004-12-09 12:32:05
Shared_ptr<> down deep uses a light-weight mutex to protect the
increment and decrement of its reference count. A mutex isn't needed
here. A mutex may yield the context of execution. This seems silly to
protect a single instruction.
To support threads, all modern processors offer some form of interlocked
operation or atomic compare-and-swap instruction. On SPARC cpus, it
is the CAS instruction, which acts much like a spin-lock. Windows
offers InterlockedIncrement() and InterlocledDecrement() functions,
which in the newer Microsoft compilers may be compiled as an intrinsic.
I'm a bit allergic to context yielding synchronization objects thrown
randomly into my server code. Does anyone know of any reasons to not
use CAS-style programming here before I propose using it for smart_ptr<>?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk