Provided by: libsdl3-doc_3.2.20+ds-2_all 

NAME
SDL_MemoryBarrierRelease - Insert a memory release barrier (macro version).
SYNOPSIS
#include <SDL3/SDL_atomic.h>
#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction()
DESCRIPTION
Memory barriers are designed to prevent reads and writes from being reordered by the compiler and being
seen out of order on multi-core CPUs.
A typical pattern would be for thread A to write some data and a flag, and for thread B to read the flag
and get the data. In this case you would insert a release barrier between writing the data and the flag,
guaranteeing that the data write completes no later than the flag is written, and you would insert an
acquire barrier between reading the flag and reading the data, to ensure that all the reads associated
with the flag have completed.
In this pattern you should always see a release barrier paired with an acquire barrier and you should
gate the data reads/writes with a single flag variable.
For more information on these semantics, take a look at the blog post:
http://preshing.com/20120913/acquire-and-release-semantics
This is the macro version of this functionality; if possible, SDL will use compiler intrinsics or inline
assembly, but some platforms might need to call the function version of this,
SDL_MemoryBarrierReleaseFunction to do the heavy lifting. Apps that can use the macro should favor it
over the function.
THREAD SAFETY
Obviously this macro is safe to use from any thread at any time, but if you find yourself needing this,
you are probably dealing with some very sensitive code; be careful!
AVAILABILITY
This macro is available since SDL 3.2.0.
SEE ALSO
SDL_MemoryBarrierAcquire(3), SDL_MemoryBarrierReleaseFunction(3)
Simple Directmedia Layer SDL 3.2.20 SDL_MemoryBarrierRelease(3)