Low level atomic operations are defined in all cases for a specific set of places. These places are listed in Places for low-level atomic operations:
When symbol is dynamically bound, this means the dynamically bound value. |
|
It is an error to use a low level atomic operation on a lexically bound symbol. |
|
Notes about atomic
slot-value
operations:
:instance
and
:class
allocated slots.The low level atomic operations implicitly ensure order of memory between operations in different threads.
The low level atomic operations are: atomic-push, atomic-pop, atomic-fixnum-incf, atomic-fixnum-decf, atomic-incf, atomic-decf, atomic-exchange and compare-and-swap.
Application of macros that are defined by define-atomic-modify-macro is also restricted to the places in Places for low-level atomic operations above, because they implicitly use low level atomic operations.
You can test whether a place is suitable for use with these operations by the predicate low-level-atomic-place-p.
LispWorks User Guide and Reference Manual - 21 Dec 2011