DELPHI跨平台的临界替代者
在WINDOWS里面使用临界来保护多线程需要访问的共享对象,现在,DELPHI有了新的跨平台临界保护者--System.TMonitor
代码演示如下:
FConnections := TObjectDictionary<TIdTCPConnection,TDSTCPChannel>.Create;
。。。
procedure TCMServerForm.CMServerTransportDisconnectEvent(Event: TDSTCPDisconnectEventObject);
var
Index: Integer;
begin
if (FConnections = nil) or (Event.Connection = nil) then
Exit;
//进入临界保护
System.TMonitor.Enter(FConnections);
try
FConnections.Remove(TIdTCPConnection(Event.Connection));
TThread.Synchronize(nil, procedure
begin
//update the connection list box, removing the connection that was just closed
Index := ConnectionsList.Items.IndexOfObject(Event.Connection);
if Index > -1 then
begin
ConnectionsList.Items.Delete(Index);
if ConnectionsList.SelCount = 0 then
SessionIdList.ClearSelection;
end;
end);
finally
// 终止临界保护
System.TMonitor.Exit(FConnections);
end;
end;
转载于:https://www.cnblogs.com/hnxxcxg/p/5670707.html
DELPHI跨平台的临界替代者相关推荐
- 关于 Delphi跨平台开发Android调用 JNI JAR java 的说明和注意事项
2Pascal-新时代的Pascal-关于 调用 JNI JAR java 的说明和注意事项,调用第 靠写不下了 - Powered by Discuz! 关于 调用 JNI JAR 的说明和注意事项 ...
- 利用Delphi-cross-socket 库提升kbmmw 跨平台开发
以前我写过了,通过httpsys 提升windows 下,delphi 多层应用.随着delphi 10.2 对linux 的支持,很多人也想在linux 下 发布kbmmw 服务器,但是官方仅通过i ...
- 咏南LINUX中间件
咏南LINUX中间件 什么是跨平台? DELPHI跨平台已经不是停留在理论,而是可以实用了. 同一套中间件既能在WINDOWS服务器上面部署,又可以在LINUX服务器上面部署. 而做到这一切,只需要一 ...
- 【翻译】.NET 5 Preview 1 发布
.NET 5 Preview 1 发布 去年年底,我们发布了.NET Core 3.0和3.1.这些版本添加了桌面应用程序模型Windows Forms(WinForms)和WPF,ASP.NET B ...
- ActiveMQ消息队列介绍(转)
ActiveMQ是一个开源兼容Java Message Service (JMS) 1.1面向消息的中件间. 来自Apache Software Foundation. ActiveMQ提供松耦合的应 ...
- 如何在Android上访问iCloud服务
Apple users are able to store their notes, pictures, contacts, and settings in their iCloud storage ...
- 提高软件执行效率的几条原则
似乎有很多朋友对于我说的"避免使用WITH语句"持反对意见.理由是With语句可以提高执行效率. 的确With是可以稍微提高一些执行效率,但是这是以破坏代码可读性的代价来 ...
- 揭秘FMX进度条样式修改
Delphi跨平台开发中的FMX样式处理给了我们UI设计的很多便捷.在很多年前使用Delphi开发VCL应用时,我们都期盼各种各样的皮肤控件,他能给我们带来新颖.夺目.优雅的程序外观.在现今的FMX应 ...
- 架构 | 前后端分离与前端工程化
文章目录 前言 前后端分离 核心 对开发行为和职责的直接影响 前端工程化 本地代理与ngix反向代理 node是什么,有什么特点,与前后端分离,前端工程化的关系 node,npm,package.js ...
最新文章
- 【采集层】Kafka 与 Flume 如何选择
- Java连接数据库出现java.sql.SQLException: After end of result set的原因
- C# .net 命名规范
- python可以实现哪些功能_Python学习究竟有多强大,Python代码能实现哪些功能
- POJ 3275 Ranking the Cows (floyd传递闭包)
- HDU 5727 Necklace
- 汽车电子专业知识篇(十五)-整车电气系统设计——高压系统集成方案
- Excel——字符串操作函数
- 006 关于大数据的本地模式环境的搭建
- 类的虚函数表和虚函数在内存中的位置
- 【NOIP2016提高组复赛】蚯蚓 题解
- revit二次开发之插件安装包制作
- 皮尔逊(Pearson)相关系数 - 公式和代码实现
- 自定义B站视频播放速度
- 移动端web开发click touch tap区别
- 苹果系统手机调用java线程出错_Java线程面试题
- python-matplotlib-数据可视化-导入shp矢量数据并显示成图
- 编译安装pypy,让py飞起来
- UGUI内核大探究(十一)ScrollRect与ScrollBar
- 3DMax 2020中文版
热门文章
- python地图散点图_Python中基于Basemap的三维散点图
- 【安卓开发 】Android初级开发(八)WebView网页
- 【WebRTC---入门篇】(九)WebRTC网络基础:P2P/STUN/TURN/ICE
- C语言编写简单朗读发音小工具!!
- 乐高ev3搭建图_乐高EV3第一讲,Hello Ev3,搭建机甲战神模型
- canoco5冗余分析步骤_打造高性能的大数据分析平台
- vmware6.5.2序列号_教你如何查询苹果序列号,查询是否为官换机、激活时间等
- 单模单纤光纤收发器指示灯及故障问题详解
- 二层和三层工业交换机的主要参数说明
- [渝粤教育] 中国地质大学 金融保险业会计 复习题