转-临界区对象TCriticalSection与TRTLCriticalSection的区别
2016-10-26 11:10
381 查看
TRTLCriticalSection是一个结构体,在windows单元中定义; 是InitializeCriticalSection, EnterCriticalSection, LeaveCriticalSection, DeleteCriticalSection 等这几个kernel32.dll中的临界区操作API的参数; TCriticalSection是在SyncObjs单元中实现的类,它对上面的那些临界区操作API函数 进行了了封装,简化并方便了在Delphi的使用; 如TCriticalSection.Enter;就是调用了EnterCriticalSection这个API函数。 多线程程序中,如果各个线程要访问同一个资源,如同一个变量 这时就要使用线程同步技术,才不会使线程之间产生冲突和干扰 线程同步有多种办法,使用临界区是其中最简单,也是效率最高的办法(CPU占 用时间最少) 使用临界区代码如下: 先声明一个TRTLCriticalSection类型的全局变量 var MyCs:TRTLCriticalSection; 在程序开始或建立线程之前,初始化 InitializeCriticalSection(MyCs);//初始化临界区 在程序结束或所有线程结束后,删除它 DeleteCriticalSection(MyCs);//删除临界区 再在线程中要同步的地方加入 EnterCriticalSection(MyCs); //进入临界区 try //程序代码 finally LeaveCriticalSection(MyCs); //离开临界区 end;
相关文章推荐
- 【转】临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
- 临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
- delphi:临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
- 转-临界区对象TCriticalSection与TRTLCriticalSection的区别
- 临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
- 【转】临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
- delphi:临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
- 使用CriticalSection(CRITICAL_SECTION*) 去创建临界区对象 应该在线程创建前创建
- 问临界区TCriticalSection 与 TRtlCriticalSection 的区别
- 互斥对象与临界区的区别!
- 临界区,互斥事件,互斥对象,信号量的区别
- 线程同步-临界区、互斥对象、事件对象区别
- ie和firefox中img对象区别的困惑
- 面向对象的系统分析和系统设计的区别是什么?
- ie和firefox中img对象区别的困惑
- 静态变量 静态对象 静态函数和非静态函数的区别。(我的理解,大家看看对不对)
- 注意document中需要对象的方式,区别下面四种
- 在jsp的内值对象中response 和out.print有什么区别啊
- 【PB】谈 Create 和 OpenUserObject 创建 GraphicObject 对象的区别
- oracle 中的大对象数据类型blob、clob、nclob的意义以及区别