业务需求:主线程重组数据后,一份转发至其他程序,一份存储本地记录

使用多线程+信号与槽进行处理,可实现功能,效果如图

主线程触发了信号,立即执行结束,等待下一包数据到来;

子线程sub1花费2s时间发送数据;

子线程sub2花费4s时间存储数据。

当主线程每2s完成一次数据重组时,子线程sub2将会如何处理数据,是选择丢包同步,还是队列等待?

通过做实验,结果如图:

主线程发送了0号和1号数据包后,子线程sub2才存储完0号数据包;

主线程发送了2号和3号数据包后,子线程sub2才存储完1号数据包;

以此类推,我们发现:但子线程处理速率达不到主线程处理速率时,会选择队列等待,而不是丢包数据同步。

原文地址:https://www.cnblogs.com/Kevinsh-Lee/p/11773859.html

时间: 2024-11-08 14:16:09

业务需求:主线程重组数据后,一份转发至其他程序,一份存储本地记录的相关文章

Android之——任意时刻从子线程切换到主线程的实现(插曲)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45951149 一.引入 在Android开发中常常会遇到网络请求,数据库数据准备等一些耗时的操作:而这些操作是不允许在主线程中进行的.因为这样会堵塞主线程导致程序出现未响应情况. 所以只能另起一个子线程进行这些耗时的操作,完成后再显示到界面.众所周知,界面等控件操作只能在主线程中完成:所以不可避免的需要从子线程切换到主线程. 二.方法 对于这样的情况在Android 中比较常见的

[Android] 任意时刻从子线程切换到主线程的实现

======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:http://blog.csdn.net/qiujuer/article/details/41599383 ========================================================

Qt自己定义事件实现及子线程向主线程传送事件消息

近期在又一次学习Qt的时候,由于要涉及到子线程与主线程传递消息,所以便琢磨了一下.顺便把有用的记录下来,方便自己以后查询及各位同仁的參考! 特此声明,本篇博文主要讲述有用的,也就是直接说明怎么实现,就不打算陈述一大堆理论啦,只是,还是建议大家去查查对应的理论比較好.这样能对Qt的消息传送机制的理解更加深入. 依据网上大多数人的资料,要实现自己定义消息,须要从QEvent 派生一个自己定义的事件:事实上也能够不须要,仅仅要使用QEvent::Type自己定义一个事件即可了. 在这里,本人把两种实现

Qt自定义事件实现及子线程向主线程传送事件消息

最近在重新学习Qt的时候,因为要涉及到子线程与主线程传递消息,所以便琢磨了一下,顺便把实用的记录下来,方便自己以后查询及各位同仁的参考! 特此声明,本篇博文主要讲述实用的,也就是直接说明怎么实现,就不打算陈述一大堆理论啦,不过,还是建议大家去查查相应的理论比较好,这样能对Qt的消息传送机制的理解更加深入! 根据网上大多数人的资料,要实现自定义消息,需要从QEvent 派生一个自定义的事件:其实也可以不需要,只要使用QEvent::Type自定义一个事件就行了.在这里,本人把两种实现方法都在这里讲

Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息

MainActivity如下: package cc.c; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.widget.TextView; /** * Demo描述: * * 示例步骤如下: * 1 子线程给子线程本身发送消息 * 2 收到1的消

Handler具体解释系列(四)——利用Handler在主线程与子线程之间互发消息

MainActivity例如以下: package cc.c; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.widget.TextView; /** * Demo描写叙述: * * 演示样例过程例如以下: * 1 子线程给子线程本身发送消息 *

C++拾遗--多线程:主线程与子线程的同步

C++拾遗--多线程:主线程与子线程的同步 前言 在多线程编程时,有时是需要要求主线程与子线程同步的. 正文 程序演示 下面的一个例子,演示了主线程与子线程之间的同步问题. 程序描述: 在主线程中,有一整型变量count,初始化为0.主线程把count的地址传递给开启的子线程,子线程打印获取的值,随后主线程递增count的值,再次开启另一个子线程,传递count的地址-- #include <stdio.h> #include <stdlib.h> #include <pro

蓝牙连接后,启动子线程接收数据,主线程卡住了

============问题描述============ 我看了下google的bluetoothchat的demo,它那里把蓝牙建立客户端连接的部分也放在子线程里执行的. 我目前的程序,蓝牙建立连接的步骤是在UI线程里,但是bluetoothSocket接收数据的部分是在子线程中的,但是现在碰到一个问题,开启子线程后,主线程不接着往下执行了. 根据我的日志记录,connectedThread.run();之后的日志方法LogHelper.Write("已经运行过子线程");就一直卡着

【iOS开发-95】JSON反序列化、XML数据解析以及主线程中的UI更新等小细节

我们发送请求后,一般会获得data数据,这个时候我们反序列化即可. 常用的数据格式之一是JSON,格式如: {key:value,key:value,key:value....} (1)因为iOS5之前苹果不支持JSON解析,所以催生很多第三方解析,SBJson以及JSONKit.简单地JSON反序列化示例如下: NSURL *url=[NSURL URLWithString:@"http://www.baidu.com"]; NSURLRequest *request=[NSURLR