Browse Source

* naieve implementation of TMREWS

git-svn-id: trunk@1030 -
marco 20 years ago
parent
commit
e6d48d0c6a
2 changed files with 44 additions and 0 deletions
  1. 32 0
      fcl/inc/syncob.inc
  2. 12 0
      fcl/inc/syncobh.inc

+ 32 - 0
fcl/inc/syncob.inc

@@ -30,3 +30,35 @@ procedure TCriticalSection.Leave;
 begin
 begin
   Release;
   Release;
 end;
 end;
+
+constructor TMultiReadExclusiveWriteSynchronizer.Create;
+
+begin
+  Crit:=tcriticalsection.create;
+end;
+
+destructor TMultiReadExclusiveWriteSynchronizer.Destroy;
+begin
+  Crit.free;
+end;
+
+procedure  TMultiReadExclusiveWriteSynchronizer.Beginwrite;
+begin
+  Crit.acquire;
+end;
+
+procedure  TMultiReadExclusiveWriteSynchronizer.Endwrite;
+begin
+  Crit.release;
+end;
+
+procedure  TMultiReadExclusiveWriteSynchronizer.Beginread;
+begin
+  Crit.acquire;
+end;
+
+procedure  TMultiReadExclusiveWriteSynchronizer.Endread;
+begin
+  Crit.acquire;
+end;
+

+ 12 - 0
fcl/inc/syncobh.inc

@@ -62,3 +62,15 @@ type
    TSimpleEvent = class(TEventObject)
    TSimpleEvent = class(TEventObject)
       constructor Create;
       constructor Create;
    end;
    end;
+
+   TMultiReadExclusiveWriteSynchronizer = class
+   private
+      crit:TCriticalsection;
+   public
+      constructor Create; virtual;
+      destructor  Destroy; override;
+      procedure Beginwrite;
+      procedure Endwrite;
+      procedure Beginread;
+      procedure Endread;
+   end;