[Overview][Constants][Types][Classes][Index] |
[Properties (by Name)] [Methods (by Name)] [Events (by Name)]
Critical section
Source position: syncobjs.pp line 38
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 |
lazarus-ccr.sourceforge.net |