Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.programming.threads > #1243
| From | "aminer" <aminer@toto.com> |
|---|---|
| Newsgroups | comp.programming.threads, comp.programming |
| Subject | Re: Distributed Reader-Writer Mutex 1.1 |
| Date | 2012-11-29 10:59 -0600 |
| Organization | A noiseless patient Spider |
| Message-ID | <k980mp$r1l$1@dont-email.me> (permalink) |
| References | <k95v4d$brt$1@dont-email.me> |
Cross-posted to 2 groups.
Hello,
I have updated Distributed Reader-Writer Mutex to version 1.13,
i have saved and restored the ebx/rbx register in the
GetCurrentProcessorNumber inline assembler function, and now
it's working correctly.
You can download it from:
http://pages.videotron.com/aminer/
Thank you,
Amine Moulay Ramdane.
"aminer" <aminer@toto.com> wrote in message
news:k95v4d$brt$1@dont-email.me...
> Hello,
>
>
> Distributed Reader-Writer Mutex was updated to version 1.1 , in this new
> version it works both across processes and threads.
>
>
> Description:
>
> Distributed Reader-Writer Mutex, based on the Dmitry Vyukov C++
> Distributed Reader-Writer Mutex , that works across processe and threads,
> I have included the following Reader-Writer Mutexes inside this
> Distributed Reader-Writer mutex:
>
> TMREW a light weight MREW lock (multiple-readers-exclusive-writer lock)
> that is very fast and that works across processes and threads and
> TMultiReadExclusiveWrite from JCL and now both of them can scale better,
> and i have modified the Dmitry Vyukov Distributed Reader-Writer Mutex, in
> the first version i have not used GetCurrentProcessor() but i have used
> GetCurrentThreadID(), and i have also provided you with a second version
> that scales better, to be able to use the second version please use the
> version2 inside defines.inc, i have given you a test.pas example for the
> first version and test1.pas for the second version, but don't forget to
> use version2 inside defines.inc, to use the second version just uncomment
> the version2 inside defines.inc and comment version1. I have also done a
> cache line alignement in TOmniMREW, this has allowed Drwlock to scale
> better.
>
> 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 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(100);
> You have four methods:
> procedure wlock; // same as EnterWriteLock of TOmniMREW
> procedure wunlock; // same as ExitWriteLock
> procedure rlock; // same as EnterReadLock
> procedure runlock; // same as ExitReadLock
>
> and you have to pass the number of
> MREWs(multiple-readers-exclusive-writer) to the constructor like this:
> drw:=TDRWLOCK.create(200); // here we are creating 200 MEWs
> Here is some scalability numbers:
>
> I have used TOmniMREW of the Omnithread library and used only
> EnterReadLock() and ExitReadLock() with four threads on a quad cores and
> TOmniMREW gave a negative scalability of -5.51x
>
> And when i have used the second version of Distributed Reader-Writer Mutex
> using only rlock() and runlock() , it gave me +3.94x scalability with four
> threads on four cores. So now it's scaling.
>
> And about the second version , don't forget to initialize the number that
> you pass to rlock() and runlock() to 0 before calling rlock() and
> runlock() .
>
> In the previous versions i have aligned the array elements on cache line
> bounderies like have done Dmitry Vyukov, and when i have tested the second
> version it didn't work correctly , so i have thought about that and after
> that i have decided to not align the array elements on cache line
> bounderied but just add a cache line padding to TOmniMREW and this time it
> has worked perfectly and now the second version is scaling perfectly..
>
> 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 5,6,7 use -DDelphi
> For Delphi 2005,2006,2007,2009,2010+ use the switch -DDELPHI2005+
> 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.1 from:
>
> http://pages.videotron.com/aminer/
>
>
>
>
> Thank you,
> Amine Mouklay Ramdane.
>
>
Back to comp.programming.threads | Previous | Next — Previous in thread | Next in thread | Find similar
Distributed Reader-Writer Mutex 1.1 "aminer" <aminer@toto.com> - 2012-11-28 16:21 -0600
Re: Distributed Reader-Writer Mutex 1.1 "aminer" <aminer@toto.com> - 2012-11-28 20:47 -0600
Re: Distributed Reader-Writer Mutex 1.1 Anonymous <nobody@remailer.paranoici.org> - 2012-11-29 15:55 +0000
Re: Distributed Reader-Writer Mutex 1.1 "aminer" <aminer@toto.com> - 2012-11-28 21:08 -0600
Re: Distributed Reader-Writer Mutex 1.1 "aminer" <aminer@toto.com> - 2012-11-29 10:59 -0600
Re: Distributed Reader-Writer Mutex 1.1 Wilfried März <Wilfried.Maerz@gmx.at> - 2012-11-29 20:25 +0100
csiph-web