Delphi 线程中的 Synchronize 和 临界区TCriticalSection 区别
Delphi 线程中的 Synchronize 和 临界区 TCriticalSection 的 区别
相同点:都是阻止其他线程执行,保证当前执行线程安全。
不同点:
Synchronize:会判断此线程是否结束,如果没有结束,继续执行当前线程,中间会停顿几秒,不会继续执行其他线程,
临界区:会记录线程队列,等上一个线程结束,再执行下一个线程。
Synchronize 即不允许别一个线程来调用这个函数,避免多个子线程同时访问该线程资源。
1、如果是将数据同步回主线程,如果过程没有执行完,主窗体(线程)会阻塞(卡主), 即 避免多个子线程同时访问主线程资源。
2、如果是将数据同步回子线程,即相当于阻止其他线程访问当前执行的线程。
为什么要有 Synchronize ?
Synchronize 经常用在子线程与主线程的资源交互上,如果不采用 Synchronize 则会出现,线程执行完后和主线程的交互上会出现问题。
例如:线程中创建线程,线程中创建进程,线程中创建窗体。
本区别解释归本博客,如有不对,请指正。
创建时间:2020.02.25 更新时间:2020.02.27
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报