У меня есть два потока: один для сбора данных, а другой для отображения. Во избежание ненужной синхронизации. Я использую двойную буферизацию (или перелистывание страниц) следующим образом:
- поток данных записывает буфер 1, в то время как поток отображения читает буфер 2
- как только запись для буфера завершена, поток данных переключается на другой буфер (буфер 2) и начинает запись новой страницы.
- Для чтения, если буфер находится в середине записи, поток отображения читает из другого буфера.
Это на самом деле работает хорошо, но иногда (1 на 100 кадров) я вижу разрывы на дисплее, что означает, что все еще существует состояние гонки.
Итак, как мне реализовать минимальную (эффективную) синхронизацию этой двойной буферизации? Мне хватило бы псевдоалгоритма.