|
Boost : |
From: Anthony Williams (anthony_w.geo_at_[hidden])
Date: 2006-10-24 08:42:07
"Peter Dimov" <pdimov_at_[hidden]> writes:
> Chris Thomasson wrote:
>> Here is the initial experimental pseudo-code that I am thinking about
>> prototyping in IA-32 Assembly:
>>
>> http://groups.google.com/group/comp.programming.threads/browse_frm/thread/5ffb0ed46a4bcb4b
>
> Seems like it can work. Don't you only need one bit for writes though?
It's essentially the same algorithm I've used in my latest offering on the
thread_rewrite branch.
I use 3 bits for the actual state (1 bit for currently shared, 1 for currently
exclusive, and 1 for shared with upgradable), a 14 bit count of waiting
writers, and a 15 bit count of waiting/running readers, so it all fits in a
32-bit word, and I can use plain CAS rather than DWCAS. I've also extended the
algorithm to cover upgradeable locks.
Anthony
-- Anthony Williams Software Developer Just Software Solutions Ltd http://www.justsoftwaresolutions.co.uk
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk