Skip to content

TMultiReadExclusiveWriteSynchronizer

[Properties (by Name)][Methods (by Name)][Events (by Name)]

Standard implementation of a IReadWriteSync interface

Declaration

Source position: systhrdh.inc line 40

Type
  TMultiReadExclusiveWriteSynchronizer = class (TInterfacedObject, IReadWriteSync)
  private
    fThreadList : Array[0..15] of Pointer;
    freaderqueue : peventstate;
    fwritelock : TRtlCriticalSection;
    fwaitingwriterlock : prtlevent;
    fWriterThreadID : TThreadID;
    fRevisionLevel : Cardinal;
    fwriterequests : Cardinal;
    factivethreads : Cardinal;
  protected
    function ThreadIDtoIndex(aThreadID: TThreadID) : Integer;
    function GetThreadInfo(AutoCreate: Boolean) : Pointer;
    procedure RemoveThread(AThreadInfo: Pointer);
  public
    constructor Create;  Virtual;
    destructor Destroy;  Override;
    function Beginwrite : Boolean;
    procedure Endwrite;
    procedure Beginread;
    procedure Endread;
    RevisionLevel : Cardinal;
    WriterThreadID : TThreadID;
  end
  ;

Description

TMultiReadExclusiveWriteSynchronizer is a default implementation of the IReadWriteSync interface. It uses a single mutex to protect access to the read/write resource, resulting in a single thread having access to the resource.

Members

Member Type Visibility Description
Beginread Method public Request read access to the resource
Beginwrite Method public Request write access to the resource.
Create Method public Create a new instance of the TMultiReadExclusiveWriteSynchronizer class
Destroy Method public Destroys the TMultiReadExclusiveWriteSynchronizer instance
Endread Method public Release read access to the resource
Endwrite Method public Release write access to the resource
factivethreads Field private
freaderqueue Field private
fRevisionLevel Field private
fThreadList Field private
fwaitingwriterlock Field private
fwritelock Field private
fwriterequests Field private
fWriterThreadID Field private
GetThreadInfo Method protected
RemoveThread Method protected
RevisionLevel Property public
ThreadIDtoIndex Method protected
WriterThreadID Property public

Inheritance

Class Description
TMultiReadExclusiveWriteSynchronizer(IReadWriteSync) Standard implementation of a IReadWriteSync interface

See also

Name Description
Cardinal An unsigned 32-bits integer.
Cardinal An unsigned 32-bits integer.
Cardinal An unsigned 32-bits integer.
Cardinal An unsigned 32-bits integer.
IReadWriteSync Read/Write synchronizer
peventstate Pointer to EventState, which is an opaque type.
prtlevent Pointer to RTLEvent, which is an opaque type.
TRtlCriticalSection A critical section.
TThreadID Type for Thread-IDs
TThreadID Type for Thread-IDs