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: