【转】临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
来源:互联网 发布:班级介绍ppt模板知乎 编辑:程序博客网 时间:2024/05/21 11:04
http://hi.baidu.com/twtynk1/blog/item/10e97715f19ef00b4a90a75b.html
TRtlCriticalSection 是一个结构体,在windows单元中定义;
是InitializeCriticalSection,EnterCriticalSection,LeaveCriticalSection等这几个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的区别
- 互斥对象与临界区对象的区别
- 互斥对象与临界区的区别!
- 互斥量与临界区的区别
- 互斥量与临界区的区别
- 互斥量与临界区的区别
- 互斥量与临界区的区别
- 临界区与互斥锁的区别
- 互斥量与临界区的区别
- 互斥量与临界区的区别
- 临界区(Critical section)与互斥体(Mutex)的区别
- 临界区(Critical section)与互斥体(Mutex)的区别
- 互斥量、临界区、信号量和时间的作用与区别
- 互斥量、临界区、信号量和时间的作用与区别
- 临界区(Critical section)与互斥体(Mutex)的区别
- SD卡的控制方法(指令集和控制时序)
- 字符网页输出的一些测试
- 什么是Unicode是什么是UTF-8是什么
- placement new释疑
- ASP动态网页下UTF-8页面乱码的解决方法
- 【转】临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
- SQL即插即取自增字段ID
- 使用 Java 对 Linux 下文件编码格式进行批量转换
- 很无语啊,为啥好好一篇文章,拷到CSDN上格式就全乱了……考虑换博客了
- 查找文件命令find
- Asp.Net文件下载方法 参考
- HP-UX TOP用法
- javascript实现图片滚动效果代码
- windows 系统的服务