请问怎样使用TCritialSection类

winapp 2003-03-11 11:14:53
请问怎样使用TCritialSection类,需要专门include 什么文件吗?
...全文
72 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjgj3368 2003-03-11
  • 打赏
  • 举报
回复
包含头文件
#include <syncobjs.hpp>
创建出TCritialSection的实例以后使用Enter()和Leave()方法或Acquire()和Release()方法
....
MyCritialSection->Enter();
//MyCritialSection->Acquire();
...
需要同步的代码
...
MyCritialSection->Leave();
//MyCritialSection->Release();

举列:
pLockXY->Acquire(); // lock out other threads

try
{
Y = sin(X);
}
__finally
{
pLockXY->Release();
}


OK!
HUANG_JH 2003-03-11
  • 打赏
  • 举报
回复

TRTLCriticalSection SendCommandSect; //定义临界区对象

InitializeCriticalSection( &SendCommandSect ); //初始化
...
void __fastcall TProduceClass::SendCommandDataRoutine( void )//线程函数
{
//在线程函数中添加
while( !Application->Terminated)
{
EnterCriticalSection(&SendCommandSect);

//线程函数要干的事情

LeaveCriticalSection(&SendCommandSect);
}
}
...
DeleteCriticalSection( &SendCommandSect );//退出删除
cheese 2003-03-11
  • 打赏
  • 举报
回复
包含头文件
#include <syncobjs.hpp>
创建出TCritialSection的实例以后使用Enter()和Leave()方法
....
MyCritialSection->Enter();
...
需要同步的代码
...
MyCritialSection->Leave();
....
需要注意的是Enter()和Leave()必须成对使用,否则后面使用Enter()的线程会无限等待直到前一个线程Leave()。
cheese 2003-03-11
  • 打赏
  • 举报
回复
包含头文件
#include <syncobjs.hpp>
创建出TCritialSection的实例以后使用Enter()和Leave()方法
....
MyCritialSection->Enter();
...
需要同步的代码
...
MyCritialSection->Leave();
....
需要注意的是Enter()和Leave()必须成对使用,否则后面使用Enter()的线程会无限等待直到前一个线程Leave()。
winapp 2003-03-11
  • 打赏
  • 举报
回复
还有TMuiltiReadExclusiveWriteSynchronizer呢?简单说说吧.
winapp 2003-03-11
  • 打赏
  • 举报
回复
多谢几位!我在BCB开发人员指南上看到了gjgj3368(冷面修罗)的例子,可是没看到要包含<syncobjs.hpp>
其它几位请问你们看的哪本书?

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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