|
Boost : |
From: Peter Dimov (pdimov_at_[hidden])
Date: 2006-10-20 17:45:21
Chris Thomasson wrote:
>> Is this inferior to your proposed scheme?
>
> Maybe... Currently, all of my pointer-ops are 100% lock-free. My
> reference count adjustments are 100% lock-free for everything except
> strong competing accesses (e.g., it only *takes a spinlock for strong
> competing accesses, **and when the count drops to zero). My counter
> objects can be swapped using normal word-based atomic operations
> (e.g., XCHG and CAS, no DWCAS required)...
How do you distingush strong competing accesses from noncompeting accesses?
You have two pointers, global and local; what levels of thread safety do
these offer? Is global the atomic pointer and local the "as safe as an int"
equivalent? Or is local to be kept local to a thread?
If I have
ptr::global<X> px;
and I copy px into another global, does this take a spinlock? If I assign to
it? Sorry for asking so many questions, but lock-free source code is hard.
:-)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk