传输数据中的双缓冲设计

        先说说遇到的问题是什么情况,一般我们在编程的时候,遇到的数据量都是可以量级的,cpu压力并不是太大,比如一个小时一次请求服务器获取时间来进行校验,一分钟获取一下wifi设备的信息更新下状态,或者一秒钟获取一下接受目标设备传过来的有效信息,很少出现秒以下的量级;然后就这样写着写着就遇到问题了,现在从蓝牙设备终端获取数据频率是30ms一次,一次大概传输一百多,或者两百多字节,这种按照以前的传输方式传输的话很容易卡死,用了各种办法,把缓冲区从一个换成两个,然后又把缓冲区从两个换成三个才解决问题,当然思想上单线程顺序执行已经不行了,然后就用双缓冲交替接受数据才跟的上速度。

       这种问题一般遇不到,但是对速度要求高的地方可能会用的比较多点,双缓冲设计只是一种思想,并不是一种硬性的编程规范,就类似于面向对象的思想,其实并没有很严格的限制,当然如果遇到一个大点的公司讲究编程规范的时候可能会有点要求。

       下面献上代码:

//two buffers to save data
int BUFFER_LENGTH = 800;
byte[] mBuffer1 = new byte[BUFFER_LENGTH];
int mBuffer1Pointer = 0;
byte[] mBuffer2 = new byte[BUFFER_LENGTH];
int mBuffer2Pointer = 0;
boolean mFlagWrite;//flag to switch buffer

byte[] mLargeTargetArray = new byte[10 * 1000];

//deal data,bytes: source a
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值