Boost logo

Boost :

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<>?

Glen


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk