All Manuals > LispWorks User Guide and Reference Manual > 44 The MP Package

NextPrevUpTopContentsIndex

with-exclusive-lock

Macro
Summary

Holds a sharing lock in exclusive mode while evaluating its body, and then unlocks the lock.

Package

mp

Signature

with-exclusive-lock (sharing-lock &optional whostate timeout) &body body => results

Arguments

sharing-lock

A sharing lock.

whostate

The status of the process while sharing-lock is locked, as seen in the Process Browser.

timeout

A non-negative real or nil.

body

The forms to execute

Values

results

The values returned from evaluating body.

Description

The macro with-exclusive-lock is the same as with-lock, except that sharing-lock must be a "sharing" lock, that is, created with the argument sharing true in make-lock. It waits until sharing-lock is completely free, that is, not locked in a sharing mode and is not locked in exclusive mode by another thread. It then locks sharing-lock in exclusive mode, evaluates body and unlocks sharing-lock.

Notes

It is not possible to hold an exclusive lock in the scope of a sharing-lock on the same lock, and trying to do it will cause the process to hang. Whether it is possible to hold an exclusive lock inside an exclusive-lock of the same lock is determined by the recursivep argument in make-lock.

See also

make-lock
with-lock
Locks


LispWorks User Guide and Reference Manual - 20 Sep 2017

NextPrevUpTopContentsIndex