In LispWorks 5.1 and previous versions, the main way to synchronize between threads is to use
to supply a predicate to the scheduler. The predicate runs periodically in the background to identify threads that are no longer blocked.
These functions are still available, but there are some alternatives that can be more efficient in many cases by removing the need for the scheduler. The alternatives are:
Access to all of these objects is atomic and does not require additional locks (except for the lock that is already used with a condition variable).
LispWorks User Guide and Reference Manual - 21 Dec 2011