aminer
2012-09-12 17:53:21 UTC
Hello,
Distributed Reader-Writer Mutex 1.0
Description:
Distributed Reader-Writer Mutex, based on the Dmitry Vyukov
C++ Distributed Reader-Writer Mutex , I have included the following
Reader-Writer Mutexes inside this Distributed Reader-Writer mutex:
TOmniMREW a light weight MREW that is very fast and
TMultiReadExclusiveWrite from JCL and now both of them
can scale better, and i have modified a little bit the Dmitry Vyukov
Distributed Reader-Writer Mutex, i have not used GetCurrectProcessor()
but i have used GetCurrectThreadID() like this:
nbr := getcurrentthreadid mod proc_count; i have provided you
with the source code, please take a look at the source code to understand
better.
The Object Pascal Distributed Reader-Writer Mutex 1.0
is based on the following C++ Distributed Reader-Writer Mutex
by Dmitry Vyukov, read more here:
http://www.1024cores.net/home/lock-free-algorithms/reader-writer-problem/distributed-reader-writer-mutex
I have also modified the Dmitry Vyukov's Distributed
Reader-Writer Mutex to use a variable number of MREWs,
you can pass the number of MREWs to the constructor like
this: drw:=TDRWLOCK.create(1000);
You have four methods:
procedure wlock; // like the EnterWriteLock of TOmniMREW
procedure wunlock; // like the ExitWriteLock
procedure rlock; // like EnterReadLock
procedure runlock; // like the ExitReadLock
and you have to pass the number of MREWs(multiple-readers-exclusive-writer)
to the constructor like this:
drw:=TDRWLOCK.create(1000); // here we are creating 1000 MEWs
Language: FPC Pascal v2.2.0+ / Delphi 7+: http://www.freepascal.org/
Operating Systems: Win and Linux (x86).
Required FPC switches: -O3 -Sd -dFPC -dWin32 -dFreePascal
-Sd for delphi mode....
Required Delphi switches: -DMSWINDOWS -$H+
For Delphi use -DDelphi
And inside defines.inc you can use the following defines:
{$DEFINE CPU32} for 32 bits systems
{$DEFINE CPU64} for 64 bits systems
{$DEFINE TOmniMREW} to use Omnithread MREW
{$DEFINE TMultiReadExclusiveWrite} to use the jcl TMultiReadExclusiveWrite
You can download Distributed Reader-Writer Mutex 1.0 from:
http://pages.videotron.com/aminer/
Thank you,
Amine Moulay Ramdane.
Distributed Reader-Writer Mutex 1.0
Description:
Distributed Reader-Writer Mutex, based on the Dmitry Vyukov
C++ Distributed Reader-Writer Mutex , I have included the following
Reader-Writer Mutexes inside this Distributed Reader-Writer mutex:
TOmniMREW a light weight MREW that is very fast and
TMultiReadExclusiveWrite from JCL and now both of them
can scale better, and i have modified a little bit the Dmitry Vyukov
Distributed Reader-Writer Mutex, i have not used GetCurrectProcessor()
but i have used GetCurrectThreadID() like this:
nbr := getcurrentthreadid mod proc_count; i have provided you
with the source code, please take a look at the source code to understand
better.
The Object Pascal Distributed Reader-Writer Mutex 1.0
is based on the following C++ Distributed Reader-Writer Mutex
by Dmitry Vyukov, read more here:
http://www.1024cores.net/home/lock-free-algorithms/reader-writer-problem/distributed-reader-writer-mutex
I have also modified the Dmitry Vyukov's Distributed
Reader-Writer Mutex to use a variable number of MREWs,
you can pass the number of MREWs to the constructor like
this: drw:=TDRWLOCK.create(1000);
You have four methods:
procedure wlock; // like the EnterWriteLock of TOmniMREW
procedure wunlock; // like the ExitWriteLock
procedure rlock; // like EnterReadLock
procedure runlock; // like the ExitReadLock
and you have to pass the number of MREWs(multiple-readers-exclusive-writer)
to the constructor like this:
drw:=TDRWLOCK.create(1000); // here we are creating 1000 MEWs
Language: FPC Pascal v2.2.0+ / Delphi 7+: http://www.freepascal.org/
Operating Systems: Win and Linux (x86).
Required FPC switches: -O3 -Sd -dFPC -dWin32 -dFreePascal
-Sd for delphi mode....
Required Delphi switches: -DMSWINDOWS -$H+
For Delphi use -DDelphi
And inside defines.inc you can use the following defines:
{$DEFINE CPU32} for 32 bits systems
{$DEFINE CPU64} for 64 bits systems
{$DEFINE TOmniMREW} to use Omnithread MREW
{$DEFINE TMultiReadExclusiveWrite} to use the jcl TMultiReadExclusiveWrite
You can download Distributed Reader-Writer Mutex 1.0 from:
http://pages.videotron.com/aminer/
Thank you,
Amine Moulay Ramdane.