decf-atomic

Arguments:
place &optional (increment-form 1)

This macro acts like decf with
the same arguments except that the update is atomic with respect to
any other processes looking at the
same place. That is, if several processes
simultaneously try to decf-atomic (or incf-atomic) the same location, all operations
occur sequentially in some unspecified order. As a result, the final
value will be what is expected. (If you just used decf's and incf's, the first decf could read the value and while it is
calculating the decrement, another decf could run, and then the
initial decf could store its
result effectively cancelling the action of the
second decf.)