| Allegro CL version 8.2 Unrevised from 8.1 to 8.2. 8.1 version |
Arguments: (var place) form
This macro expands into code that does a read-modify-write operation that is atomic with respect to the value in place. That is, the value in place is read and bound to a local variable; the value of a form is computed; then the result is stored back in place as long as that value hasn't changed since the update-atomic code read and saved it. If it has changed (tested using eq), then the new value is acquired and bound to the local variable, the form value is recomputed, and another conditional store attempt is made. This loop continues until the store is successful.
The arguments are:
Note on the place argument: not all places legal as the first argument of setf can be used as the place argument to this macro. The list of allowable places can be found in Atomic read-modify-write primitives in smp.htm.
update-atomic could be used to implement (incf-atomic (car
x))
like this:
(update-atomic (v (car x)) (1+ v))
See smp.htm and multiprocessing.htm for more information on this macro and on multiprocessing.
Copyright (c) 1998-2016, Franz Inc. Oakland, CA., USA. All rights reserved.
This page was not revised from the 8.1 page.
Created 2010.1.21.
| Allegro CL version 8.2 Unrevised from 8.1 to 8.2. 8.1 version |