[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.programming

My C++ synchronization objects library was extended..

Ramine

5/6/2016 1:14:00 AM

Hello,


My C++ synchronization objects library was extended..

I have just extended my C++ synchronization objects library,
i have added two of my scalable reader-writer locks that are amazing,
the first is my scalable DRWLock that is a scalable reader-writer lock
that is starvation-free and it does spin-wait, and the second is my
scalable DRWLockX that is a scalable reader-writer lock that is
starvation-free and it doesn't spin-wait, but it waits on the Event
objects and my SemaMonitor, so it is energy efficient.

So now it is a great C++ synchronization objects library.

You can download my new extended C++ synchronization objects library from:

https://sites.google.com/site...c-synchronization-objec...

Description:

This library contains five synchronization objects, first one is my
scalable SeqlockX that is a variant of Seqlock that eliminates the
weakness of Seqlock that is "livelock"of the readers when there is more
writers, and second is my scalable MLock that is a scalable
lock , and third is my SemaMonitor that combines all characteristics
of a semaphore and an eventcount and also a windows
Manual-reset event and also a windows Auto-reset event, and fourth
is my scalable DRWLock that is a scalable reader-writer lock that is
starvation-free and it does spin-wait, and five is is my scalable
DRWLockX that is a scalable reader-writer lock that is
starvation-free and it doesn't spin-wait, but it waits on the Event
objects and my SemaMonitor, so it is energy efficient.

If you take a look at the zip file , you will notice that it contains
the DLLs Object pascal source codes, to compile those dynamic link
libraries source codes you will have to download my SemaMonitor Object
pascal source code and my SeqlockX Object pascal source code and my
scalable MLock Object pascal source code and my scalable DRWLock Object
pascal source code from here:

https://sites.google.com/site...

I have compiled and included the 32 bit and 64 bit windows Dynamic Link
libraries inside the zip file, if you want to compile the dynamic link
libraries for Unix and Linux and OSX on (x86) , please download the
source codes of my SemaMonitor and my scalable SeqlockX and my scalable
MLock and my scalable DRWLock and compile them yourself.

My SemaMonitor of my C++ synchronization objects library is
easy to use, it combines all characteristics of a semaphore and an
eventcount and also a windows Manual-reset event and also a windows
Auto-reset event, here is its C++ interface:

class SemaMonitor{
public:
SemaMonitor(bool state, long2 InitialCount1=0,long2
MaximumCount1=INFINITE);
~SemaMonitor();

void wait(unsigned long mstime=INFINITE);
void signal();
void signal_all();
void signal(long2 nbr);
void setSignal();
void resetSignal();
long1 WaitersBlocked();
};

So when you set the first parameter that is state of the constructor to
true. it will add the characteristic of a Semaphore to the to the
Eventcount, so the signal will not be lost if the threads are not
waiting for the SemaMonitor objects, but when you set the first
parameter of the construtor to false, it will not behave like a
Semaphore because if the threads are not waiting for the SemaCondvar or
SemaMonitor the signal will be lost..

the parameters InitialCount1 and MaximumCount1 is the semaphore
InitialCount and MaximumCount.

The wait() method is for the threads to wait on the SemaMonitor
object for the signal to be signaled.

and the signal() method will signal one time a waiting thread on the
SemaMonitor object.

the signal_all() method will signal all the waiting threads on the
SemaMonitor object.

the signal(long2 nbr) method will signal nbr number of waiting threads

the setSignal() and resetSignal() methods behave like the windows Event
object's methods that are setEvent() and resetEvent().

and WaitersBlocked() will return the number of waiting threads on
the SemaMonitor object.

As you have noticed my SemaMonitor is a powerful synchronization object.

Please read the readme files inside the zip file to know more about them..

Language: GNU C++ and Visual C++

Operating Systems: Windows, Linux, Unix and OSX on (x86)




Thank you,
Amine Moulay Ramdane.