Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.programming.threads > #2587
| From | Ramine <ramine@1.1> |
|---|---|
| Newsgroups | comp.programming.threads |
| Subject | Re: So i will explain to you what is exactly my scalable MLock algorithm.. |
| Date | 2014-08-29 15:29 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <ltqkaq$vpq$5@dont-email.me> (permalink) |
| References | <ltqk61$vpq$2@dont-email.me> |
Hello,
Scalable lock that is FIFO fair and starvation-free version 1.2
Authors: Amine Moulay Ramdane.
Description:
A node based Lock that is scalable, FIFO fair and starvation-free.
- Discovered by Amine Moulay Ramdane
- This lock is scalable
- It has the same space requirement as the scalable MCS lock
- Doesn't require a local "queue node" to be passed in as a parameter
as is doing the MCS and CLH locks.
- Spins only on local locations on a cache-coherent machine
- And it's fast.
Please read this:
A bigger problem with the MCS lock is its API. It requires a second
structure to be passed in addition to the address of the lock. The
algorithm uses this second structure to store the information which
describes the queue of threads waiting for the lock. Unfortunately, most
code written using spinlocks doesn't have this extra information, so the
fact that the MCS algorithm isn't a drop-in replacement to a standard
spin lock is a problem.
An IBM working group found a way to improve the MCS algorithm to remove
the need to pass the extra structure as a parameter. Instead, on-stack
information was used instead. The result is the K42 lock algorithm:
Unfortunately, the K42 algorithm has another problem. It appears that it
may be patented by IBM. Thus it cannot be used either. (Without perhaps
paying royalties to IBM.)
So you have to know that my scalable MLock doesn't require a local
"queue node" to be passed in as a parameter as is doing the MCS and CLH
locks, my scalable MLock doesn't require any parameter to be passed,
just call the Enter() and Leave() method and that's all.
Please take a look a the test.pas Object Pascal demo inside the zipfile,
compile and run it...
You can download my scalable MLock from:
https://sites.google.com/site/aminer68/scalable-mlock
Language: FPC Pascal v2.2.0+ / Delphi 7+: http://www.freepascal.org/
Operating Systems: Windows, Mac OSX , Linux , Unix...
Required FPC switches: -O3 -Sd -dFPC -dFreePascal
-Sd for delphi mode....
Required Delphi switches: -$H+ -DDELPHI
{$DEFINE CPU32} and {$DEFINE Windows32} for 32 bit systems
{$DEFINE CPU64} and {$DEFINE Windows64} for 64 bit systems
Amine Moulay Ramdane.
Back to comp.programming.threads | Previous | Next — Previous in thread | Find similar | Unroll thread
So i will explain to you what is exactly my scalable MLock algorithm.. Ramine <ramine@1.1> - 2014-08-29 15:27 -0700 Re: So i will explain to you what is exactly my scalable MLock algorithm.. Ramine <ramine@1.1> - 2014-08-29 15:29 -0700
csiph-web