A compiler writer's guide to <atomic>, minor update
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@115633 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
56f0d5be06
commit
e78d1f548b
@ -377,11 +377,17 @@ for the detailed definitions of each of these orderings).
|
|||||||
<p>
|
<p>
|
||||||
On some platforms, the compiler vendor can offer some or even all of the above
|
On some platforms, the compiler vendor can offer some or even all of the above
|
||||||
intrinsics at one or more weaker levels of memory synchronization. This might
|
intrinsics at one or more weaker levels of memory synchronization. This might
|
||||||
lead for example to not issuing an <tt>mfense</tt> instruction on the x86. If
|
lead for example to not issuing an <tt>mfense</tt> instruction on the x86.
|
||||||
the compiler does not offer any given operation, at any given memory ordering
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If the compiler does not offer any given operation, at any given memory ordering
|
||||||
level, the library will automatically attempt to call the next highest memory
|
level, the library will automatically attempt to call the next highest memory
|
||||||
ordering operation. This continues up to <tt>seq_cst</tt>, and if that doesn't
|
ordering operation. This continues up to <tt>seq_cst</tt>, and if that doesn't
|
||||||
exist, then the library takes over and does the job with a <tt>mutex</tt>.
|
exist, then the library takes over and does the job with a <tt>mutex</tt>. This
|
||||||
|
is a compile-time search & selection operation. At run time, the
|
||||||
|
application will only see the few inlined assembly instructions for the selected
|
||||||
|
intrinsic.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user