实时清除数据容器的内容

时间:2012-09-17 15:39:04

标签: cocoa concurrency real-time nsmutabledata

enter image description here

下面的架构最能解释我的问题

基本上,我必须实时清除NSMutableData对象(或任何其他对象)的内容,即我无法阻止其包含的线程。有没有办法/ API来做到这一点?

更新:在下面的评论中为mentioned ..我正在接收主线程的音频数据包并立即将其路由到专用音频池线程..(我有这么多线程的原因是b / ci无法控制传入数据包的接收..它们实时进入+播放速度比接收数据的速度慢很多..因此单独的音频池线程和读者线程)

1 个答案:

答案 0 :(得分:0)

Circular buffers aka ring buffers可以很好地处理NSMutableData,因为你可以直接使用字节数组作为缓冲区。

看看设计,我不明白为什么你需要这么多缓冲区。似乎有一个线程和两个缓冲区太多。为什么不只有一个环形缓冲区,填充它(它是'自我清除')并在一个单独的线程中读取它?设计是你的(即可以改变)还是强加于你?

无论如何,请尝试为音频池使用环形缓冲区。