环形队列的一些看法
来源:互联网 发布:遗作剧情知乎 编辑:程序博客网 时间:2024/06/05 18:27
最近在搞视频播放方面的工作,其中有使用一个环形队列对decoder进行缓冲,以达到播放流畅的效果。但这个环形队列有些问题,所以导致视频播放总是不流畅。调整过之后,发现其中的bug来自于一个flag标志位的判断。
都知道环形队列需要一个flag标志位来判断这个队列是满还是空,假设标志位flag=0表示空,flag=1表示满,则程序运行后,如果头指针head和为指针tail相等,则就认为环形队列满,置标志位flag=1,反之读取数据后就认为这个环形队列不满,置标志位flag=0。
一般环形队列的实现都是这样的,但是在多线程操作的时候,如果对性能有要求,都不会使用互斥体对数据进行保护,而多个线程操作的时候就很容易造成这个flag的值有问题,影响环形队列的正常工作。所以我想,如果不要flag,只通过环形队列自己来控制是否可以?发现只有当tail在head后面时才可能出现环形队列满的情况,那么如果控制环形队列生产者,使其在向队列中生产数据的时候,不允许tail=head的情况出现,这样就可以不要flag标志位,同时也可以去掉互斥体的保护,不影响性能,但不好之处就是需要浪费一定得队列空间。
总之,具体应用具体取舍了,毕竟软件不可能十全十美,是有取舍的。
- 环形队列的一些看法
- 环形队列的应用
- 环形队列的实现
- 环形消息队列的实现
- 环形队列的基本运算
- 环形队列的c++实现
- 环形队列的C++实现
- 环形队列的实现原理
- 环形队列的数组实现
- 环形顺序队列的实现
- 数组实现的 环形队列
- GDC07的一些看法
- 自己的一些看法
- PCA的一些看法
- Qt的一些看法
- 指针的一些看法
- PCA的一些看法
- 环形队列
- cookie与session知识点总结
- AOL邮箱的客户端设置
- 使用P4D 编写Python Extension
- System corrupt again (running in linux cd)
- 拉格朗日插值算法Lagrange-Interpolynomials
- 环形队列的一些看法
- [zt]Flex 3: 构建高级用户界面 添加拖放支持5
- 人际沟通---与同事交往“十大忌”
- SQL 常用函数总结
- [zt]Flex 3: 构建高级用户界面 使用 Tree 控件1
- 用简单的css代码为相册图片加上漂亮阴影~~~转载自HackerPrince的空间
- 纯CSS的相册图片展示
- 图片设置方式
- 其文其人其言其业,明星天使好友宰相