免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3291 | 回复: 10
打印 上一主题 下一主题

两线程之间逻辑处理问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-22 15:29 |只看该作者 |倒序浏览
基于arm9的cdma模块语音通信。server端的socket程序中开了两个线程,一个线程负责接收数据,并把数据memcpy到共享内存中去,另一个线程负责读取共享内存中的数据,然后write到声卡设备中去,但是第二个线程写的太快,而第一个线程由于网络原因,收包的速度太慢,不知道该怎么协调这俩个线程。。。。如果加上锁的话,另一个线程得阻塞等待,放出来的声音就会很卡。。。不知道该怎么设计怎么协调了,求助各位大侠!

论坛徽章:
0
2 [报告]
发表于 2009-03-22 17:21 |只看该作者
使用缓冲, 至于卡,如果是速度跟不上缓冲的数据消耗速度, 那就是程序的问题了。

论坛徽章:
0
3 [报告]
发表于 2009-03-22 20:55 |只看该作者
原帖由 pagx 于 2009-3-22 17:21 发表
使用缓冲, 至于卡,如果是速度跟不上缓冲的数据消耗速度, 那就是程序的问题了。

用cdma模块连的网络,socket收包的速度就是那么快,没法子提高了,确实跟不上缓冲的数据消耗速度,所以才想不出该咋解决了。。。

论坛徽章:
0
4 [报告]
发表于 2009-03-22 21:00 |只看该作者
假如是网络的限制, 你只能换种方式实现, 别扣在程序上。你应该作的是替换方案, 或者说换网络, 或者换需求。

论坛徽章:
0
5 [报告]
发表于 2009-03-22 21:03 |只看该作者
共享内存中, 应至少有两块buffer,
一块用于读, 一块用于写, 两块可以同步进行.

锁只锁维护读写次序, 不是将两个buffer一起锁住, 能写得时候不能读, 能读得时候不能写, 如果这样就不行了.

论坛徽章:
0
6 [报告]
发表于 2009-03-22 21:15 |只看该作者
原帖由 pagx 于 2009-3-22 21:00 发表
假如是网络的限制, 你只能换种方式实现, 别扣在程序上。你应该作的是替换方案, 或者说换网络, 或者换需求。


局域网内早已经实现了,现在要做基于arm9的cdma模块联入公网网后跟pc机语音通信,cdma模块是用的串口连的,115200波特率,网速方面是没有办法再提高了。。。

原帖由 太平绅士 于 2009-3-22 21:03 发表
共享内存中, 应至少有两块buffer,
一块用于读, 一块用于写, 两块可以同步进行.

锁只锁维护读写次序, 不是将两个buffer一起锁住, 能写得时候不能读, 能读得时候不能写, 如果这样就不行了.


使用了三块buffer,轮换着用,write的线程跑的太快,在write中如果加的延时太大了,可以保证一定的同步,但放出来的声音会卡卡的,如果加的延时小了,不能保证同步,在前一段时间内可以满足要求,但到了后面write线程又跑到前面去了。。。

论坛徽章:
0
7 [报告]
发表于 2009-03-22 21:26 |只看该作者
原帖由 xiyoubbs 于 2009-3-22 21:15 发表


局域网内早已经实现了,现在要做基于arm9的cdma模块联入公网网后跟pc机语音通信,cdma模块是用的串口连的,115200波特率,网速方面是没有办法再提高了。。。



使用了三块buffer,轮换着用,write的线 ...


用semaphore + mutex 生产者消费者啊

论坛徽章:
0
8 [报告]
发表于 2009-03-22 21:28 |只看该作者
1、改用语音压缩算法/压缩率, 来适应窄带的带宽要求。
2、当出现音源跟不上时, 延迟一段时间再继续/或者插一段其他音源。
PS: 有人问怎么能流畅播放网络上的高清, 我想应该有两个条件, 带宽和片源。缺少其中至一, 程序怎么弄倒是白搭。

论坛徽章:
0
9 [报告]
发表于 2009-03-22 21:56 |只看该作者
原帖由 太平绅士 于 2009-3-22 21:26 发表


用semaphore + mutex 生产者消费者啊

那要是生产者太慢,消费者太快呢?势必造成消费者经常等待,而语音这个消费者如果等待太久,就不能够进行语音通信了。。。

论坛徽章:
0
10 [报告]
发表于 2009-03-22 21:58 |只看该作者
原帖由 xiyoubbs 于 2009-3-22 21:56 发表

那要是生产者太慢,消费者太快呢?势必造成消费者经常等待,而语音这个消费者如果等待太久,就不能够进行语音通信了。。。


生产者太慢, 随便什么方法都不行的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP