|
@@ -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;
|
|
|
|
+
|