
"Anthony Williams" <anthony_w.geo@yahoo.com> wrote in message news:y7r53mxs.fsf@yahoo.com...
"Peter Dimov" <pdimov@mmltd.net> 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/5f...
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.
I only make use of DWCAS on 32-bit systems; CAS is 100% compatible with my algorithm on 64-bit systems... BTW, is yours starvation-free?