社区
网络通信/分布式开发
帖子详情
关于 TidTcpServer cpu占用率过高的问题
searoom
2011-03-14 11:51:56
我只是简单的在 onconnect 中取得连接,然后在 onexecute 中响应客户端的简单请求。
已经确认客户端并没有发送命令了,只是 connect 没有断开还保持了而已,
此事 服务端程序的 cpu 占用率会很大,一直维持在 90% 以上。
不太理解这是为什么。
...全文
407
7
打赏
收藏
关于 TidTcpServer cpu占用率过高的问题
我只是简单的在 onconnect 中取得连接,然后在 onexecute 中响应客户端的简单请求。 已经确认客户端并没有发送命令了,只是 connect 没有断开还保持了而已, 此事 服务端程序的 cpu 占用率会很大,一直维持在 90% 以上。 不太理解这是为什么。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
searoom
2011-03-14
打赏
举报
回复
再次感谢,给分了
goodhj
2011-03-14
打赏
举报
回复
都是自动的,放一个上去,IdTCPServer的 ThreadMgr属性里选上就好了,不需要代码
IdThreadMgrPool是管理线程池,连接比较多的话,频繁的连接的话用这个比较好。
原理嘛就看看帮助
searoom
2011-03-14
打赏
举报
回复
谢谢 goodhj ,加入 IdThreadMgrDefault 后确实减少了很多,然后我又在 Execute() 事件里面第一行写了 sleep(100),cpu 占用率就降下来了。
goodhj 能否讲讲 IdThreadMgrDefault 以及 IdThreadMgrPool 的用法及原理吗?
goodhj
2011-03-14
打赏
举报
回复
if AThread.Terminated then
exit;
if not AThread.Connection.Connected then
exit;
//if not AThread.Connection.IOHandler.Readable() then这个判断不要了
// exit;
searoom
2011-03-14
打赏
举报
回复
我在 Execute 中有这两个判断,早成我以为 Execute 并没有执行
if not AThread.Connection.Connected then
exit;
if not AThread.Connection.IOHandler.Readable() then
exit;
后来加入测试代码在这两个语句上面,才发现 Execute 会不停的执行。
to: alanhao
我是想保持当前在线的名单,所以,不想直接断开客户端连接。
alanhao
2011-03-14
打赏
举报
回复
监听也是需要消耗cpu的
建议随时断开不活跃的线程。
goodhj
2011-03-14
打赏
举报
回复
有IdThreadMgrDefault线程管理控件吗?
connect 没有断开就表示线程还在,比如你有100个TCP连接就会开100个线程,虽然没有发指令,但那100个线程仍然还是在运行的。只不过onexecute不执行
关于id
tcpserver
的使用
原文:http://blog.csdn.net/hnxxcxg/article/details/2798019 用id
TCPServer
,客户端接上来时,如何取得客户端的IP? IP:=AThread.Connection.Binding.PeerIP;Port:=AThread.Connection.Binding.PeerPort; 尝试解答你的疑问:
问题
一:在Form1中放入...
Delphi中关于id
tcpserver
的使用解答(转)
Delphi中关于id
tcpserver
的使用解答(转) 用id
TCPServer
客户端接上来时,如何取得客户端的IP? IP:=AThread.Connection.Binding.PeerIP; Port:=AThread.Connection.Binding.PeerPort; 尝试解答你的疑问:
问题
一: 在Form1中放入ID
TCPServer
控件,一旦有s
Delphi语言的网络管理
Delphi是一种基于Object Pascal编程语言的集成开发环境,也常被称为RAD(Rapid Application Development)工具。Delphi因其友好的视觉设计界面、强大的库支持以及良好的性能,广泛应用于桌面应用、数据库管理及网络应用等多个领域。对于网络管理而言,Delphi语言能够帮助开发者快速开发出适合不同需求的网络管理工具。Delphi语言在网络管理中的应用,因其快速开发能力和丰富的组件支持,使得开发者能够轻松实现各类网络管理功能。
Delphi平台点对点传输控件P2PSock源码解析与实战
P2PSock是专为Delphi开发环境量身打造的高性能点对点网络通信控件,封装了底层Winsock API,提供简洁的面向对象接口。其核心目标在于降低TCP级P2P应用开发复杂度,尤其适用于需跨主机直连、低延迟通信的场景。相比原生Indy或Synapse库,P2PSock在连接稳定性与资源占用上表现更优,内置非阻塞I/O模型和消息驱动机制,显著提升多客户端并发处理能力。为了适应调试、发布、跨平台等多种场景,通常利用Delphi的条件编译机制实现灵活配置。
mmtools2.0源码深度解析与二次开发实战
mmtools2.0 以“轻量、高效、可扩展”为核心设计理念,致力于为系统级任务提供一体化解决方案。其架构采用模块化设计,各功能组件高内聚、低耦合,支持按需加载与动态集成。相比传统脚本组合工具,mmtools2.0 通过原生代码编译实现毫秒级响应,显著降低资源占用。为了提高模块间的松耦合度,mmtools2.0大量采用接口驱动编程(Interface-Driven Programming)模式。所有关键服务均先定义抽象接口,再由具体类实现,从而支持后期替换或模拟测试。
网络通信/分布式开发
1,594
社区成员
32,957
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章