| [Overview][Constants][Types][Classes][Index] | 
[Properties (by Name)] [Methods (by Name)] [Events (by Name)]
Critical section
Source position: syncobjs.pp line 42
type TCriticalSection = class(TSynchroObject)  | 
||
public  | 
||
procedure Acquire; override;  | 
  | 
Enter the critical section  | 
procedure Release; override;  | 
  | 
Leave the critical section  | 
procedure Enter;  | 
  | 
Alias for Acquire  | 
function TryEnter;  | 
  | 
Try and obtain the critical section  | 
procedure Leave;  | 
  | 
Alias for Release  | 
constructor Create;  | 
  | 
Create a new critical section.  | 
destructor Destroy; override;  | 
  | 
Destroy the criticalsection instance  | 
end;  | 
  | 
Critical section  | 
|
| | | ||
  | 
Abstract synchronization object  | 
|
| | | ||
TCriticalSection is a class wrapper around the low-level TRTLCriticalSection routines. It simply calls the RTL routines in the system unit for critical section support.
A critical section is a resource which can be owned by only 1 caller: it can be used to make sure that in a multithreaded application only 1 thread enters pieces of code protected by the critical section.
Typical usage is to protect a piece of code with the following code (MySection is a TCriticalSection instance):
// Previous code MySection.Acquire; Try // Protected code Finally MySection.Release; end; // Other code.
The protected code can be executed by only 1 thread at a time. This is useful for instance for list operations in multithreaded environments.
  | 
Enter the critical section  | 
|
  | 
Leave the critical section  |