【Delphi】 Thread.Queue与Synchronize的区别
来源:互联网 发布:大数据开发工程师面试 编辑:程序博客网 时间:2024/05/19 05:30
前话: 其实大家要学会看源码, 我接下来要说的这些东东,与其等别人讲,还不如自己搞几个代码试一下,印象还深刻点
TThread.Queue和TThread.Synchronize的区别,
TThread.Queue和TThread.Synchronize的区别,
效果上:二者的作用都是让业务代码在主线程中执行,差别: Synchronize是阻塞,Queue是非阻塞
代码上 两个方法最终都是调用的 class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False)类方法,
差别
Synchronize则是使用了Thread对象中的FSynchronize对象变量,然后QueueEvent为False来调用TThread.Synchronize类方法,
内部在执行FSynchronize时,创建了事件对象,通过WaitForSingleObject来阻塞执行。
Queue调用是自己创建了一个PSynchronizeRecord, 然后QueueEvent为True来调用TThread.Synchronize类方法,内部则把PSynchronizeRecord放入SyncList列表中,然后退回,并不直接执行PSynchronizeRecord, 那问题来了,在那里执行呢?Delphi在TApplication.Idle方法中执行(最终调用了CheckSynchronize)
Over
0 0
- 【Delphi】 Thread.Queue与Synchronize的区别
- Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- java 深入研究Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 1/7 分糖
- Unity3D编辑器扩展(三)之对选中对象的操作(Selection类)
- 使用opencv的imshow函数时遇到segmentation fault问题
- Mybatis多参数及实体对象传递
- python pandas
- 【Delphi】 Thread.Queue与Synchronize的区别
- 【NOIP2017提高组模拟12.24】C
- HDU2612 Find a way(双路广搜BFS)
- java正则表达式的应用
- Android开发之Intent.Action
- 合并两个排序的链表
- 正则表达式,你值得拥有!
- Nginx 常见问题
- tyvj P1266 费解的开关