博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载红鱼儿]kbmmw 开发点滴:TkbmMWLock用法
阅读量:5079 次
发布时间:2019-06-12

本文共 1037 字,大约阅读时间需要 3 分钟。

TStringList不是线程安全的,当我们在线程用到他是,要做保护。方法有两种,一种是用delphi自带的Critical,另外一种就是kbmMW为我们提供的TkbmMWLock类。

现在我们看看如何用TkbmMWLock为TStringList做线程安全:
1.基于TStringList声明自己的类:
TThreadStringList=class(TStringList)
2.在该类中增加kbmMWLock实例
Private
 

FLock:TkbmMWLock;
在类的Create及Destructor方法中建立与取消
3.调用方法
当我们在操作ThreadStringList实例时,调用kbmMWLock的的Lock.BeginWriet及Lock.EndWrite方法进行保护就行了。
4.附最后的代码:
TThreadStringList=class(TStringList)
Private
  FLock:TkbmMWLock
public
  constructor Create;override;
  destructor Destroy;override;
  property Lock:TkbmMWLock Read FLock;
end;
constructor TThreadStringList.Create;
begin
  inherited Create;
  FLock:=TkbmMWLock.Create;
end;
destructor TThreadStringList.Destroy;
begin
  FLock.Free;
  inherited Destroy;
end;
使用该类的代码:
sl:TThreadStringList;
...
sl.Lock.BeginWrite;
try
  sl.Add('Test!');
finally
  sl.Lock.EndWrite;
end;
当然,这里的操作sl,含读与写两种操作。
通过上面说明,我们看到了TkbmMWLock的用法,就是为一个类增加一个线程锁,实际上,kbmMW本身很多的类,就是用kbmMWLock加线程锁的,我们也可以随时利用kbmMWLock为自己的类加锁。
当然,不喜欢这样,想用Delphi自带的来保护线程也一样,全凭个人喜好了!

转载于:https://www.cnblogs.com/xalion/archive/2012/10/23/2735159.html

你可能感兴趣的文章
文件文本的操作
查看>>
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>
jQuery.form.js使用
查看>>
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>
mysql数据增删改查
查看>>
shell中下载最新版本或指定版本的办法(Dockerfile 中通用)
查看>>
极客时间-左耳听风-程序员攻略-分布式架构工程设计
查看>>
akka之种子节点
查看>>
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>