【发布时间】:2015-12-20 22:00:30
【问题描述】:
在使用多个线程时我是否需要担心同步问题?
我正在编写一个代码,该代码计算不同麦克风通道之间的延迟并输出几个补偿延迟的 .wav 文件。
这是我目前的蛮力方法:
- 为每个麦克风创建线程(使用 NAudio WaveIn)。
- 每次录制的数据可用时,将它们附加到大的静态缓冲区中(每个麦克风 1 个)。
- 等待检测到脉冲(在本例中为拍手)。
- 寻找峰值并确定“距离”(数组索引之间的差异)。
- 录制完成后,将录制的数据从静态内存存储到 .wav 文件中,并为每个麦克风设置适当的偏移量。
如果由于静态缓冲区的大小有限,总录制会话很短,我当前的方法(编号 2)就可以工作。如果我在每次可用时访问记录的数据,我不确定记录的数据是否会同步。
可能的解决方案:
将它们存储在循环缓冲区中。为每个线程实现一个计数器,并在新数据可用时递增。这使我能够跟踪任何可能的同步问题。
不担心这个问题,因为它们不存在?
我不知道的其他可能的、更有效的方法?
【问题讨论】:
标签: c# multithreading naudio