请教关于临界区(TCriticalSection)的用法?

cdmar79 2003-11-08 06:06:31
我在程序中有一个自定义的类的一个实例和对于它的一个临界区

A = class....
var used : A
var Lockused : TCriticalSection

现在我要在两个线程XThread和YThread(自定义的)中使用它
在XThread中为
Lockused.aquired;
try
used.read //////read是类A的一个函数
finally
Lockused.release;

在YThread中为
Lockused.aquired;
try
used.write //////write是类A的另一个函数
finally
Lockused.release;

1。请问这样写有效吗?能防止并发冲突吗??
TCriticalSection能锁住变量used吗(包括它的类变量、类方法)吗?
2。如果不能,请问应该怎么写???
...全文
281 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdmar79 2003-11-10
  • 打赏
  • 举报
回复
谢了!结贴!给分!
FrameSniper 2003-11-09
  • 打赏
  • 举报
回复
楼主的写法完全正确!
hkbarton 2003-11-09
  • 打赏
  • 举报
回复
TRTLCriticalSection用在多线程中,任何情况都可以用的
cdmar79 2003-11-09
  • 打赏
  • 举报
回复
怎么没人来帮忙啊!!
郁闷:(
Seahilly 2003-11-08
  • 打赏
  • 举报
回复
up
hkbarton 2003-11-08
  • 打赏
  • 举报
回复
我没有用过delphi封装过的TCriticalSection类,但这样应该是有效的。
我的做法是可以这样写:
var Lockused : TRTLCriticalSection
...
EnterCriticalSection(Lockused);
try
used.read //////read是类A的一个函数
finally
LeaveCriticalSection(Lockused);

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧