我有兩個線程,一個用於數據採集,另一個用於顯示。爲了避免不必要的同步。我使用雙緩衝(或翻頁)如下:如何在多線程應用程序中同步雙緩衝
- 數據線程寫入緩衝器1而顯示線程讀緩衝器2
- 一次寫入一個緩衝完成後,數據線切換到另一個緩衝器(緩衝區2)並開始寫入新頁面。
- 對於讀取,如果一個緩衝區處於寫入過程中,顯示線程將從另一個緩衝區讀取數據。
它實際上運行良好,但有時(每100幀1)我可以看到在顯示器上撕裂,這意味着仍然存在競爭條件。
那麼如何實現這個雙緩衝的最小(有效)同步呢?僞算法對我來說就足夠了。
除非您的GUI庫爲您完成,否則您還需要根據顯卡的刷新信號同步雙緩衝。否則,如果在重新繪製顯示的同時顯示器刷新,仍可能看到一些「撕裂」。 – 2011-12-28 03:19:35