0
点赞
收藏
分享

微信扫一扫

使用TMonitor在线程中加解锁

小龟老师 2022-03-30 阅读 27

今天学习Delphi System.Rtti的源代码,进一步学习到了如何在线程中使用锁。参考官方的代码整理出来分享

var

  _GlobalContextTokenLock: TObject;

定义一个全局的实例,供TMonitor使用。

再写一个方法,返回_GlobalContextTokenLock:


function GCTokenLock: TObject; inline;
begin
if _GlobalContextTokenLock = nil then
_GlobalContextTokenLock := TObject.Create;
Result := _GlobalContextTokenLock
end;


在这个单元的initialization及finalization段中建立及释放这个对象:


initialization
GCTokenLock;
finalization
_GlobalContextTokenLock.Free;



class procedure TRttiContext.DropContext;
begin
TMonitor.Enter(GCTokenLock);
try
//具体的业务代码,线程安全的
finally
TMonitor.Exit(GCTokenLock);
end;
end;


这是从官方源码中整理出来的,参考这个代码,我们可以更简化的使用TMonitor来加锁与解锁。


举报

相关推荐

0 条评论