On Mon, Apr 06, 2020 at 03:13:18PM -0400, Paolo Bonzini wrote: > -The semantics of these primitives map to Java volatile variables, > -and are strongly related to memory barriers as used in the Linux > -kernel (see below). > - > -As long as you use atomic_mb_read and atomic_mb_set, accesses cannot > -be reordered with each other, and it is also not possible to reorder > -"normal" accesses around them. > - > -However, and this is the important difference between > -atomic_mb_read/atomic_mb_set and sequential consistency, it is important > -for both threads to access the same volatile variable. It is not the > -case that everything visible to thread A when it writes volatile field f > -becomes visible to thread B after it reads volatile field g. The store > -and load have to "match" (i.e., be performed on the same volatile > -field) to achieve the right semantics. > - > - > -These operations operate on any type that is as wide as an int or smaller. > +which however are deprecated. Please indicate why they are deprecated and advise which alternative is preferred. This will help readers understand the current best practices and make a decision about whether to avoid the deprecated APIs.