• 6161阅读
  • 6回复

[提问]如何解决两个线程之间信号和槽之间数据丢数的问题? [复制链接]

上一主题 下一主题
离线attain84
 
只看楼主 正序阅读 楼主  发表于: 2011-07-17
其实干一件很简单的事,网上收数,解析数据显示
现在我弄了两个线程,线程A和线程B,线程A收数,收到数后就通过信号发出去,线程B通过槽来接收数并进行后续处理,然后定时刷新界面
现在问题就来了,这样的话会出现线程A将信息已经传到线程B那了,线程B正处理这一帧数据的时候,线程A又收到了新的数……就是可能出现线程B在一段时间内没有跟上线程A的节奏,这样的话就会出现“丢数”的现象,请问这个问题有什么办法解决?
离线attain84
只看该作者 6楼 发表于: 2011-07-21
回 5楼(diyuanbo) 的帖子
谢谢指点,
回头看看这个queue方式。
离线diyuanbo

只看该作者 5楼 发表于: 2011-07-18
回 3楼(attain84) 的帖子
在2个线程中的信号和槽的连接方式有queue方式,可以解决短时间内处理不同步.如果从长期来说B的处理速度跟不上A的信号的速度.那就是系统设计的问题,不是信号-槽或是缓冲区能解决的.因为缓冲总有边界.
离线attain84
只看该作者 4楼 发表于: 2011-07-18
回 2楼(myseemylife) 的帖子
另外不太明白说的延迟信号,这个信号怎么能延迟呢?
离线attain84
只看该作者 3楼 发表于: 2011-07-18
谢谢两位提的宝贵意见。
另外我还想知道,就信号和槽本身有没有办法解决?
信号和槽本身有没有缓存一说,如果说信号和槽这么容易就能造成丢数,这个也太靠谱了。
离线myseemylife

只看该作者 2楼 发表于: 2011-07-18
回 楼主(attain84) 的帖子
弄一个缓冲区就好啦。延迟信号事件的时间,别让读写过快
蠢笨的愚钝~
离线mmmmen
只看该作者 1楼 发表于: 2011-07-17
个人认为可以把 线程A传给线程B的数据存在队列中 然后线程B处理队列中的数据 这样应该可以
快速回复
限100 字节
 
上一个 下一个