Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.programming.threads > #1716
| From | aminer <aminer@toto.net> |
|---|---|
| Newsgroups | comp.programming.threads, comp.programming |
| Subject | SemaCondvar was updated to version 1.11 |
| Date | 2013-09-19 11:40 -0700 |
| Organization | albasani.net |
| Message-ID | <l1f5u4$ten$1@news.albasani.net> (permalink) |
Cross-posted to 2 groups.
Hello,
SemaCondvar was updated to version 1.11, i have included
a portable spinlock that is very efficient more efficient than the
Windows Critical section on both high contention and low contention, so
SemaCondvar have given an excellent performance now.
Description:
SemaCondvar and SemaMonitor are new and portable synchronization objects
that combine all the charateristics of a semaphore and a condition
variable, they only use an event object and a critical section , so they
are fast.
Now you can pass the SemCondvar's initialcount and SemCondvar's
MaximumCount to the construtor, it's like the Semaphore`s InitialCount
and the Semaphore's MaximumCount.
Like this:
t:=TSemaMonitor.create(true,0,4);
When you pass True in the first parameter of the constructor the
signal(s) will not be lost even if there is no waiting threads, if it's
False the signal(s) will be lost if there is no waiting thread.
You can download SemaCondvar from:
http://pages.videotron.com/aminer/
Here is the methods that i have implemented :
TSemaCondvar = class
public
constructor
Create(m1:TCriticalSection;state1:boolean=false;InitialCount1:longword=0;MaximumCount1:longword=INFINITE);
destructor Destroy; override;
function wait(mstime:longword=INFINITE):boolean;
procedure signal();overload;
procedure signal_all();
procedure signal(nbr:integer);overload;
function WaitersBlocked:integer;
end;
TSemaMonitor = class
public
constructor
Create(state1:boolean=false;InitialCount1:longword=0;MaximumCount1:longword=INFINITE);
destructor Destroy; override;
function wait(mstime:longword=INFINITE):boolean;
procedure signal();overload;
procedure signal_all();
procedure signal(nbr:integer);overload;
function WaitersBlocked:integer;
end;
Please take a look a the test.pas Object Pascal demo inside the zipfile,
compile and run it...
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....
{$DEFINE CPU32} and {$DEFINE Windows32} for 32 bit systems
{$DEFINE CPU64} and {$DEFINE Windows64} for 64 bit systems
{$DEFINE OSX} for Mac OSX on Delphi XE4 to XE5
Thank you,
Amine Moulay Ramdane..
Back to comp.programming.threads | Previous | Next — Next in thread | Find similar
SemaCondvar was updated to version 1.11 aminer <aminer@toto.net> - 2013-09-19 11:40 -0700 Re: SemaCondvar was updated to version 1.11 aminer <aminer@toto.net> - 2013-09-19 13:34 -0700 Re: SemaCondvar was updated to version 1.11 aminer <aminer@toto.net> - 2013-09-19 13:55 -0700
csiph-web