This expands slightly on the multithreading discussion in Multi-threaded Applications.
Elephant provides a set of generic locking functions in
src/utils/locks.lisp to help protect any shared structures.
There are standard locking functions (
ele-with-lock) and then
a special locking interface called
on some lisps provides a faster locking option than the standard OS
locks of the basic interface. (i.e. under Allegro this uses
without-interrupts because Allegro still runs in a single
OS process on all platforms, this is not true of SBCL).
See the sections on Transaction handling, particularly the dynamic
*current-transaction*. Also read up on the
store controller section in the User Guide to better understand the
*store-controller*. At this time there are no other
global variables to worry about.