中间层技术及多线程技术

中间层技术及多线程技术

ID:12550583

大小:35.16 KB

页数:13页

时间:2018-07-17

中间层技术及多线程技术_第1页
中间层技术及多线程技术_第2页
中间层技术及多线程技术_第3页
中间层技术及多线程技术_第4页
中间层技术及多线程技术_第5页
资源描述:

《中间层技术及多线程技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、中间层各单元介绍二、中间层重要的类介绍三、帮大家分析一下RO是怎么工作的四、多核时代下的多线程编程----帮大家读懂TThread类(重点)1、中间层各单元介绍单元名作用BestSQL.pasBestConst.pasBestDes.pasBestFunc.pasgunFunSys.pasAdo_ConnectionPool.pas连接池单元,主要用于客户端OpenDataBHServerLib_Intf.pas中间层接口单元BHServerLib_Invk.pas中间层接口代理单元BH_MSSQL_Service

2、_Impl.pas中间层接口实现单元fServerForm.pas主窗口Provider.pasUnit_Global.pas列表对象池单元,用于客户端OpenList2、中间层重要的类介绍类名重要属性方法Ado_ConnectionPool.pas单元:TConnObject池内对象类TConnectionPools池对象类DoIncObjects方法---------增加池内部对象组成单向链表GetInstance方法----------从池里取可用的对象ReleaseInstance方法----将使用后的对象还原

3、回池ReleaseInstances方法----供检测线程调用,用于关闭长时间没有使用的TConnObject对象的数据库连接(TMSConnection)Unit_Global.pas单元:TMyHashedStringList类1、先解读IniFiles.pas单元下的THashedStringList类主要是看THashedStringList在修改删除时如何处理Hash值2、TMyHashedStringList对THashedStringList的不足做了重要的调整,在大数据量的情况下性能提高很多Unit_G

4、lobal.pas单元:TGroupObject池内对象类TPoolGroupObject池对象类IncObjects方法---------增加池内部对象组成双向链表GetGroupObject方法----------从池里取可用的对象ObjectsNoUseByStr和ObjectsSetCanUsed方法----将使用后的对象还原回池CheckGroupObject方法----供检测线程调用,用于关闭长时间没有使用的TGroupObject对象Unit_Global.pas单元:TSafedStringList类中

5、间层就是用这个类来存储用户列表的。我们都知道Delphi本向是有一个TStringList类的,但是我可以查看一下TStringList类的实现代码,我们会发现TStringList不是线程安全的。中间层的一个首要任务就是要处理多用户并发的情况也就是要处理好多线程的线程安全问题,因些才重新写了这个TSafedStringList类。它的继承关系是:TSafedStringList=class(TObject)当然了,你也可以直接从TStringList类继承下来,再改写相应的方法即可。3、帮大家分析一下RO是怎么工作的

6、Server端1、TROCustomSuperTcpServer.IntExecute在其Create事件里有fIndyServer:=TIdTCPServer.Create(nil);fIndyServer.OnExecute:=IntExecute;在IdCustomTCPServer.pas单元的TIdListenerThread.Run里调用2、TROSCServerWorker.DoExecute;会一直循环直到Client端断开。当Client端有数据请求的时候,会触发TROSCServerWorker.I

7、ncomingData事件3、TROSCServerWorker.IncomingData会接着触发TROCustomSuperTcpServer.HasData事件4、TROCustomSuperTcpServer.HasData会执行TROInvokerQueueItem.Create并将创建的对象执行TROThreadPool.QueueItem5、TROThreadPool.QueueItem执行后最终会由TROPooledThread来调用TROInvokerQueueItem.Callback6、终于在TR

8、OInvokerQueueItem.Callback里调用又回到TROCustomSuperTcpServer.DispatchMessage(其实是TROServer.DispatchMessage)重点参考下图的调用过程7、XXXX_Invk.pas单元定义的TXXXX_Invoker类是在MainProcessMessage

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。