关于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;这里,临界区无法释放,其他客户端就无法与服务器交流。
...全文
159 1 点赞 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
guhenjing 2013-01-21
求高手啊!!!!!好像还有一种解决多线程之间的干扰办法是设线程局部变量,不知道怎么做?
  • 打赏
  • 举报
回复
相关推荐
发帖
网络通信/分布式开发
加入

1579

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2013-01-21 04:45
社区公告
暂无公告