关于delphi7如何解决idtcpserver 的CurrentReadBuffer的阻塞问题

guhenjing 2013-01-21 04:45:05
如题,在indy 编程中,我需要用服务端接收多个客户端的信息,并根据客户端信息返回不同的结果
with AThread.Connection do
begin
try
//EnterCriticalSection(CS);
Tmpstr:=CurrentReadBuffer;
AThread.Synchronize(Addtmpstr);
if iRet >= 0 then
begin
Writeln(inttostr(iRet));
end
else
begin
writeln('匹配失败或非法数据');
end;
// LeaveCriticalSection(CS);
tmpstr,iret为全局变量,iret在addtmpstr中被赋值(与tmpstr值有关),如果不设临界区的话就会出现多个线程之间相互干扰的现象(不如客户端1收到的是本应该是2的值),如果设临界区的话(把//打开),如果其中一个客户端只建立连接而不发送数据的话,线程就会阻塞在Tmpstr:=CurrentReadBuffer;这里,临界区无法释放,其他客户端就无法与服务器交流。
...全文
320 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
guhenjing 2013-01-21
  • 打赏
  • 举报
回复
求高手啊!!!!!好像还有一种解决多线程之间的干扰办法是设线程局部变量,不知道怎么做?

1,594

社区成员

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

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