![]() | ![]() | ![]() | as-atomic-operation | ![]() |
|
| form* => primary-value | [Macro] |
Purpose
Execute forms as an atomic operation.
Package :portable-threads
Module :portable-threads
Arguments and values
| primary-value | The first value returned by evaluating the last form |
Returns
The primary value returned by evaluating the last form.
Description
This macro provides atomicity in the following entities:
atomic-decf, atomic-delete,
atomic-flush, atomic-incf,
atomic-push, atomic-pushnew, and
atomic-pop. It is intended only for implementing very
brief atomic operations and should not be used for long computations or
computations that wait or block.
Note that as-atomic-operation is only guaranteed to return a single value, not multiple values.
See also
atomic-decf
atomic-delete
atomic-flush
atomic-incf
atomic-push
atomic-pushnew
atomic-pop
Example
Define an atomic nsorted-insert:
(defun atomic-nsorted-insert (&rest args)
(declare (dynamic-extent args))
(as-atomic-operation (apply #'nsorted-insert args)))
The GBBopen Project
![]() | ![]() | ![]() | as-atomic-operation | ![]() |