找回密码
 立即注册
收起左侧

关于线程间等待及工作逻辑的问题

0
回复
5356
查看
[复制链接]
累计签到:3 天
连续签到:1 天
来源: 2017-6-12 21:17:59 显示全部楼层 |阅读模式
1Qter豆
现有服务器通信方式如此。发送请求后服务器返回结果,但每次数据包最多包含如15条数据。
问题在于服务器并不会告知一共有多少条数据等待返回,或者说总共有多少条数据要返回。
现已知上限为N条,每条数据有不重复的ID。

即:如果共有50条结果要返回,则会收到4个数据包。45条则为3个,数目不定,无法获取总数。并且在程序运行期间可发生变化,如用户请求新建或删除等。

我能想到的解决方案有两种:
1、收一次数据包即发送信号使界面更新一次,使用键值容器如map保存确保数据不重复,或者发送更新请求时清空容器。
2、收一次数据包即启动计时,如包间隔小于1s则使计时器重置,如计时器到期则发送信号更新界面(认为长时间没有该类型的包即为返回完毕)。

第一种方法的缺陷是界面更新过于频繁,且想不到界面应当用什么方法判断数据返回完毕,如使用等待则会堵塞界面线程。
第二种方法的缺陷在于服务器的网络连接不一定稳定高效,有可能包延迟抵达,依赖该信号进行自动化工作则可能出错。

如果仅是更新界面频繁一点也无所谓,但因自动化需求需要判断数据是否返回完毕,完毕后则顺序执行其他工作。
请问我应如何使用什么方式提高鲁棒性的同时减少等待时间,另开线程负责等待?
现有的程序简单结构如下:

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了