Delphi Thread.Queue与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
――――――――――――――――

原文链接:https://blog.csdn.net/wingleo/article/details/53860300

相关阅读 >>

Delphi 创建多级目录

Delphi自动提交网页表单和获取框架网页源码

Delphi adoquery连接数据库的查询、插入、删除、修改

Delphi 如何从dll中检索导出函数的列表

Delphi程序常用的公共代码

Delphi 用dbexpress处理jpg图片

Delphi 临时文件路径(支持安卓、ios)

Delphi getfilesize 获取文件大小 2

Delphi关于小数位精度的问题

如何在Delphi xe中通过ftp下载文件

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...