Scieneer Common Lisp 1.3.9 online documentation

kernel:with-atomic-getf-modification (oldvar place indicator &optional default) &parse-body (body decls)[Macro]

Atomically modify the value associated with the property indicator in the property list at the given place. If the property does not exist then firstly attempt to atomically add the property with the default value. The oldvar is bound to current value of the property and the body evaluated to generate a new value. Then an attempt is made to atomically update the value cell from oldvar to this new value, and if unsuccessful then loop re-binding oldvar and reevaluating the body until successful. The new value is returned. See also: kernel:setf-conditional, and kernel:with-atomic-modification.