gatomic: use GCC C11-style atomics, if available
authorRyan Lortie <desrt@desrt.ca>
Tue, 27 May 2014 13:28:08 +0000 (15:28 +0200)
committerRyan Lortie <desrt@desrt.ca>
Fri, 6 Jun 2014 15:41:12 +0000 (11:41 -0400)
commitdb0e43d25a5316f3a6f2f31712a0b8359e247a20
tree324ba19df94ede3d937b48b5b0c89b11b5a29625
parent875eeb2ca1d32fc0fdd70518f7d6f4dc8de1a287
gatomic: use GCC C11-style atomics, if available

GCC does not yet support ISO C11 atomic operations, but it has
compatible versions available as an extension.  Use these for load and
store if they are available in order to avoid emitting a hard fence
instruction (since in many cases, we do not need it -- on x86, for
example).

For now we use the fully seqentially-consistent memory model, since
these APIs are documented rather explicitly: "This call acts as a full
compiler and hardware memory barrier".

In the future we can consider introducing new APIs for the more relaxed
memory models, if they are available (or fall back to stricter ones
otherwise).

https://bugzilla.gnome.org/show_bug.cgi?id=730807
glib/gatomic.h