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 |