Mutexes are lisp objects used to coordinate access to data shared
across multiple threads (where interleaved access would be bad). These
functions are exported by the
Create and return a mutex object. No thread will own the new mutex.
Return true if arg is a mutex object.
Obtain the mutex mutex for the current thread. Will suspend the current thread until the mutex is exclusively available.
Attempt to obtain mutex mutex for the current thread without blocking. Returns true if able to obtain the mutex, false otherwise.
Release the mutex object mutex (which must have previously been obtained by the current thread). Returns true if the mutex has no new owner.