Function ACQUIRE-LOCK, RELEASE-LOCK
acquire-lock lock &key (wait t) timeout => generalized-boolean
release-lock lock => lock
Arguments and values:
lock for the calling thread.
wait governs what happens if the lock is not available: if
true, the calling thread will wait until the lock is available and
then acquire it; if
wait is nil,
acquire-lock will return
wait is true,
timeout may specify a maximum amount
of seconds to wait for the lock to become available.
It is implementation-defined what happens if a thread attempts to acquire a lock that it already holds.