首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同步处理来自多个线程的数据

同步处理来自多个线程的数据
EN

Stack Overflow用户
提问于 2015-12-20 22:00:30
回答 1查看 97关注 0票数 1

在使用多个线程时,我需要担心同步问题吗?

我正在编写一个代码,它计算不同麦克风通道之间的延迟,并输出几个.wav文件,并补偿延迟。

以下是我目前的蛮力方法:

  1. 为每个麦克风创建线程(使用NAudio WaveIn)。
  2. 每次记录数据可用时,将它们附加到大的静态缓冲区中(每个麦克风为1)。
  3. 等待一个冲动(鼓掌,在这种情况下)被检测到。
  4. 查找峰值并确定“距离”(数组索引之间的差异)。
  5. 记录完成后,将从静态存储器记录的数据存储到.wav文件中,并为每个麦克风设置适当的偏移量。

如果整个记录会话是短的,因为静态缓冲区的大小是有限的,我的当前方法(数字2)可以工作。我不确定记录的数据是否会同步,如果每次可用时都访问记录的数据。

可能的解决办法:

  1. 将它们存储在循环缓冲区中。为每个线程实现一个计数器,并在有新数据时进行增量。这使我能够跟踪任何可能的同步问题。
  2. 不要担心这个问题,因为他们不存在?
  3. 其他我不知道的更有效的方法?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-20 22:19:08

您接收到的数据通常是等距的,我不认为您的线程之间存在任何互操作,所以在计算方面您应该是好的:--不过,,在我的经验中,如果没有立即处理WaveIn回调,NAudio喜欢删除帧。这肯定会让你失去同步。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34386354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档