有关 IdTCPServer/IdTCPClient 收发消息的问题 ???

kv2002 2007-03-08 05:15:57
目的:
Server程序为多线程,当Client连接到Server时在Server上维护了一个Client连接信息列表。Server中的线程中的任务完成后需要通过Server通知给各个客户端。

Server程序 : IdTCPServer
Client程序 : IdTCPClient
方法一:某线程任务完成后就遍历Client列表来发消息通知。实际测试中发现经常会阻塞主线程。

Server程序 : IdTCPServer+IdTCPClient
Client程序 : IdTCPClient
方法二:在Server上也放了一个IdTCPClient,线程任务完成后,通过IdTCPClient发消息给IdTCPServer,然后再遍历Client列表通知。感觉这样使用有些怪。

请教大侠们给指点些高效合理的实现方法。
...全文
363 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dabaicai 2007-03-13
  • 打赏
  • 举报
回复
哈哈哈,那我去谢谢他
halfdream 2007-03-13
  • 打赏
  • 举报
回复
这是大傻CoolSlob做的自动结算功能,回头找他去....
kv2002 2007-03-12
  • 打赏
  • 举报
回复
晕倒,自动结算这么不合理呀!!
本来想给哈欠多一些。
kv2002 2007-03-12
  • 打赏
  • 举报
回复
该贴由《CSDN论坛浏览器:http://CoolSlob.ys168.com/》自动结算
kv2002 2007-03-12
  • 打赏
  • 举报
回复
谢谢,楼上的猩猩们了。是不该用Synchronize!
luxuewei5214 2007-03-12
  • 打赏
  • 举报
回复
又见哈欠,呵呵,同意他的建议
halfdream 2007-03-12
  • 打赏
  • 举报
回复
楼主线程中遍历列表为什么要使用Synchronize?

这应该是对Synchronize误用了.
Synchronize是为工作线程切换到主线程执行任务,主要用于GDI之类主线程操作.

你需要的是对列表的多线程安全访问..用临界区锁定什么的吧.
dabaicai 2007-03-12
  • 打赏
  • 举报
回复
放TIdThreadMgrDefault这个控件试试
kv2002 2007-03-09
  • 打赏
  • 举报
回复
线程中遍历列表使用Synchronize同步不会阻塞主线程吗?
我实际测试使用时好象主线程被阻塞了。
dabaicai 2007-03-09
  • 打赏
  • 举报
回复
就是方法一,我做过一个用IDTCP这两个的聊天的东西,好友上下线不就是要遍历所有客户连接线程嘛

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧