线程的难题,头疼死了(200分)

  • 主题发起人 主题发起人 wxjh2001
  • 开始时间 开始时间
W

wxjh2001

Unregistered / Unconfirmed
GUEST, unregistred user!
我的系统目前这样搞得
有一个主线程类ThreadMain,在他中间有一个死循环,用来不停的接受udp发来的响应包,
另外有一个线程类 ThreadTest,他可能生成两个或者两个以上的对象同时存在,针对他的每个对象中都传入了一个udp对象来进行给各自的目标客户发送udp请求,然而,我需要在各自发送请求后直接能够接收到目标对象的响应,目前我在外部的死循环里面也都接收到了,这个没问题,而且也区分了是哪个线程请求的响应,但是,我在每个发送线程中请求发送出去以后,我必须要判断他是否能够接收到,而且要有超时的处理,也就是,线程发送了请求以后,n久没有接收到主线程传来的得到响应的消息,我就需要对这个线程的上一个请求再重新发送一次。
我现在的问题是,如何来搞这个超时,我在发送线程里面搞了个全局变量,在一个while里面进行判断超时,但是这样好像甚至把其他线程都挂起来了,有什么解决方法呢
 
模式是这样的:
theadTest1 --->sendudp-----> while 判断本线程的全局的接收响应的变量是否被更改了,
theadTest2 --->sendudp-----> while 判断本线程的全局的接收响应的变量是否被更改了,

theadTest1,
theadTest2中间都有一个消息处理过程,专门处理主线程发来的获得响应的消息,如果接收到了,以后就更新全局的接收响应的变量值。
我觉得那个while应该不影响这里的消息函数的运行吧,而且我还在while中间添加了processmessage了,怎么办呢,不知道我的意思大家是否了解呢
 
斑竹来看看吧
 
注:各个线程中间在发送了请求后,不能直接用recv的,因为各个线程都可能接收到其他线程的响应包,这个市Udp的特性,因为indyclient无法绑定本地的端口的,所以才会如此
 
再顶一下
 
已经自己搞定了
 
后退
顶部