线程同步--临界区技术

临界区技术包括下面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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值