Нужно ли беспокоиться о проблемах синхронизации при работе с несколькими потоками?Обработка данных из нескольких потоков в синхронизации
Я программирую код, который вычисляет задержку между отдельными каналами микрофона и выводит несколько WAV-файлов с компенсированной задержкой.
Вот мой текущий метод грубой силы:
- Создание темы для каждого микрофона (с помощью NAudio WaveIn).
- Каждый раз, когда доступны записанные данные, добавьте их в большие статические буферы (по 1 для каждого микрофона).
- Подождите, пока импульс (хлопок, в данном случае) будет обнаружен.
- Ищите пики и определяйте «расстояние» (разность между индексами массива).
- После завершения записи сохраните записанные данные из статической памяти в .wav-файлы с соответствующим смещением для каждого из микрофонов.
Мой текущий метод (номер 2) работает, если общий сеанс записи короткий, поскольку размер статических буферов ограничен. Я чувствовал неуверенность в том, будут ли синхронизированы записанные данные или нет, если я получаю доступ к записанным данным каждый раз, когда они будут доступны.
Возможные решения:
хранить их в кольцевом буфере. Внедрите счетчик для каждого потока и увеличивайте его, когда доступны новые данные. Это дает мне возможность отслеживать любые возможные проблемы с синхронизацией.
Не беспокойтесь о проблеме, потому что они несуществующие?
Другие возможные, более эффективные методы, о которых я не знаю?