On 04/08/2016 09:39 PM, Hans Boehm wrote: > I didn't previously have the impression that get/setOpaque was analogous > to just C/C++ volatile. C volatile officially has nothing to do with > threads and does not prevent undefined behavior for data races. It does > not in general guarantee single-copy atomicity.
Yes, Opaque does not imply memory ordering either. > My prior impression was that Opaque was intended to be similar to a C++ > memory_order_relaxed access to a variable that is declared as both > atomic and volatile, with the unordered interpretation of C++ > "volatile". Yes, that seems to be the intended semantics; sorry for the confusion. Let's have this discussion when Paul submits the follow-up fix for https://bugs.openjdk.java.net/browse/JDK-8153875; I linked your reply there. Some cross-check against what is implemented in C1 and C2 would be required at that point. Thanks, -Aleksey