On 10/03/2015 3:04 PM, Martin Buchholz wrote:
??
I mentally map Java volatile operations to C11 seq_cst because of the
total order over all operations on volatile variables.
Volatile reads and writes do not just have acquire/release semantics.

You may be right. The synchronization order (not just operations on volatiles) is a total order. I tend to only think about the acquire/release semantics of volatile accesses - or more specifically the allowed reorderings with respect to other stores and loads. I confess I don't know what having a total order requires beyond the barriers we utilize for the volatile read/write actions ?? The fact we have two different orderings in C11 suggests something extra is required by the implementation to achieve seq_cst.

David

The java memory model does not (yet) have C11-style relaxed atomics
(like acquire or release)

On Mon, Mar 9, 2015 at 6:38 PM, David Holmes <david.hol...@oracle.com
<mailto:david.hol...@oracle.com>> wrote:

    PS. You state: "Corresponds to C11
    atomic_compare_exchange___strong." Yet that would match with the
    full bi-directional fences of the VM implementation (due to
    memory_order_seq_cst), not a volatile read followed by a volatile
    write (which would be memory_order_acq_rel).

Reply via email to