临界区技术包括下面4条API语句:
InitializeCriticalSection(CS); //初始化临界区
EnterCriticalSection(CS); //进入临界区
LeaveCriticalSection(CS); //退出临界区
DeleteCriticalSection(CS); //销毁临界区
示例:
uses Windows;
var
CS:TRTLCriticalSection;
类中使用,可简化为下面结构:
private
FLock:TRTLCriticalSection; //声明一个临界区变量
{临界区}
procedure Lock;
procedure UnLock;
implementation
constructor TMyClass.create;
begin
inherited create;
{创建一个临界区}
InitializeCriticalSection(FLock);
end;
destructor TMyClass.Destroy;
begin
DeleteCriticalSection(FLock); //销毁临界区
inherited;
end;
procedure TMyClass.Lock;
begin
EnterCriticalSection(FLock); //进入临界区
end;
procedure TMyClass.UnLock;
begin
LeaveCriticalSection(FLock); //退出临界区
end;
=====================================
以后类中使用临界区,操作可简化为:
Lock;
try
...要保护的代码....
...
...
finally
UnLock;
end;