Acquire and Release Fences Don't Work the Way You'd Expect

1 · Jeff Preshing · Nov. 25, 2013, 11:49 a.m.
Raymond Chen defined acquire and release semantics as follows, back in 2008: An operation with acquire semantics is one which does not permit subsequent memory operations to be advanced before it. Conversely, an operation with release semantics is one which does not permit preceding memory operations to be delayed past it. Raymond’s definition applies perfectly well to Win32 functions like InterlockedIncrementRelease, which he was writing about at the time. It also applies perfectly well to at...