多线程 – 如何在多线程应用程序中同步双缓冲

我有两个线程,一个用于数据采集,另一个用于显示.为了避免不必要的同步.我使用双缓冲(或页面翻转)如下:

>数据线程正在写入缓冲区1,同时显示线程读取缓冲区2
>一旦为缓冲区写入,数据线程就切换到另一个缓冲区(缓冲区2)并开始写入新页面.
>对于读取,如果缓冲区正在写入,则显示线程从另一个缓冲区读取.

它实际上运作良好,但有时(每100帧1个)我可以看到在显示器上撕裂,这意味着仍有竞争条件.

那么如何实现这种双缓冲的最小(有效)同步呢?伪算法对我来说已经足够了.

最佳答案 您可以使用两个信号量来完成此操作.这是
Producer/Consumer问题的变种.我提供的链接中的伪代码.

点赞