
"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. http://boost.cvs.sourceforge.net/boost/boost/boost/thread/win32/read_write_mutex.hpp?revision=1.1.2.8&view=markup&pathrev=thread_rewrite 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