Double buffering and triple buffering are commonly used to avoid synchronization.

With double buffering, you can’t swap buffers when reading or writing is in progress. This can be a problem in computer graphics when the frame rate is capped by Vsync. Triple buffering solves this problem.