[Overview][Constants][Types][Classes][Procedures and functions][Variables] |
Enter a critical section
Source position: threadh.inc line 137
procedure EnterCriticalsection( |
var cs: TRTLCriticalSection |
); |
EnterCriticalSectionwill suspend the current thread if another thread has currently entered the critical section. When the other thread has left the critical section (through LeaveCriticalSection), the current thread resumes execution. The result is that only 1 thread is executing code which is protected by a EnterCriticalsectionand LeaveCriticalSectionpair.
The critical section must have been initialized with InitCriticalSectionprior to a call to EnterCriticalsection.
A call to EnterCriticalsectionmust always be matched by a call to LeaveCriticalSection. To avoid problems, it is best to include the code to be execute in a try...finallyblock, as follows:
EnterCriticalSection(Section); Try // Code to be protected goes here. Finally LeaveCriticalSection(Section); end;
For performance reasons it is best to limit the code between the entering and leaving of a critical section as short as possible.
|
Initialize a critical section |
|
|
Clean up a critical section. |
|
|
Leave a critical section |