门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
账号
自动登录
找回密码
密码
登录
立即注册
请绘制轨迹完成人机验证
由vaptcha提供技术支持
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
精华区(请在“有问必答”发帖)
›
有问必答
›
数据处理
›
关于线程间等待及工作逻辑的问题
发布主题
返回列表
关于线程间等待及工作逻辑的问题
0
回复
5356
查看
[复制链接]
GarfieldGCat
当前离线
积分
15
GarfieldGCat
累计签到:3 天
连续签到:1 天
来源:
2017-6-12 21:17:59
显示全部楼层
|
阅读模式
1
Qter豆
现有服务器通信方式如此。发送请求后服务器返回结果,但每次数据包最多包含如15条数据。
问题在于
服务器并不会告知一共有多少条数据等待返回
,或者说总共有多少条数据要返回。
现已知上限为N条,每条数据有不重复的ID。
即:如果共有50条结果要返回,则会收到4个数据包。45条则为3个,数目不定,无法获取总数。并且在程序运行期间可发生变化,如用户请求新建或删除等。
我能想到的解决方案有两种:
1
、收一次数据包即发送信号使界面更新一次,使用键值容器如map保存确保数据不重复,或者发送更新请求时清空容器。
2
、收一次数据包即启动计时,如包间隔小于1s则使计时器重置,如计时器到期则发送信号更新界面(认为长时间没有该类型的包即为返回完毕)。
第一种方法的缺陷是界面更新过于频繁,且想不到界面应当用什么方法判断数据返回完毕,如使用等待则会堵塞界面线程。
第二种方法的缺陷在于服务器的网络连接不一定稳定高效,有可能包延迟抵达,依赖该信号进行自动化工作则可能出错。
如果仅是更新界面频繁一点也无所谓,但因自动化需求需要判断数据是否返回完毕,完毕后则顺序执行其他工作。
请问我应如何使用什么方式提高鲁棒性的同时减少等待时间,另开线程负责等待?
现有的程序简单结构如下:
我来回答
附件:
您需要
登录
才可以下载或查看,没有帐号?
立即注册
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了