|
Boost : |
Subject: [boost] wait-free fast-pathed, bounded-time, 100% starvation-free rw-mutex...
From: Chris M. Thomasson (cristom_at_[hidden])
Date: 2009-08-21 10:44:44
I was wondering if the following invention of mine might be of use to Boost:
http://software.intel.com/en-us/forums/intel-threading-building-blocks/topic/65822
(please __read_all__; thank you)
Here are some performance numbers wrt my algorithm versus NPTL on Linux
(fedora 10), and OpenSolaris:
http://groups.google.com/group/comp.programming.threads/msg/3e7531657a11baf0
My invention has some very interesting properties that simply do not exist
for 99% of all the other rw-mutex algorithms I have seen to date. It's 100%
starvation free and has bounded wait time for readers and writers. Heck,
even the Microsoft rw-mutex algorithm in Vista does not come close to that:
http://msdn.microsoft.com/en-us/library/aa904937(VS.85).aspx
They clearly state that their algorithm is not fair. The algorithm I have
observed in OpenSolaris does not meet this goal as well.
Another nice property is that the algorithm has wait-free fast-paths. If
readers hit a fast-path, then they are going to get wait-free access to the
protected data-structure. The same goes for writers. The underlying
operation is a single atomic fetch-and-add operation:
http://software.intel.com/en-us/forums/intel-threading-building-blocks/topic/65822/reply/87849
In fact, the algorithm only needs fetch-and-add; no stupid CAS-loops are
required.
Please take not that there are absolutely no loops in the algorithm; this is
one reason why it's bounded time and starvation free.
Also, it has conditional reader-to-writer upgrades and non-conditional
writer-to-reader downgrade capabilities. This is something that does not
exist in the Microsoft implementation, or even the OpenSolaris, or basically
any Linux implementation I have observed. Same goes for OSX.
Therefore, I think this particular algorithm might be of use to Boost.
Any thoughts?
Thank you all for you're valuable time; I really do appreciate it!
:^)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk