NextPrevUpTopContentsIndex

without-interrupts

Macro
Summary

Causes any interrupts that occur during the execution of a body of code to be queued.

Package

mp

Signature

without-interrupts &rest body => result

Arguments

body

The forms to execute while interrupts are queued.

Values

result

The result of executing body .

Description

While body is executing, all interrupts (for example, preemption, keyboard break etc.) are queued. They are executed when body exits.

Example

To ensure that the seconds and milliseconds slots are always consistent, you can use mp:without-interrupts within the function which sets them.

(defstruct elapsed-time
  seconds
  milliseconds)
(defun update-elapsed-time-atomically 
     (elapsed-time seconds milliseconds)
  (mp:without-interrupts
   (setf (elapsed-time-seconds elapsed-time) seconds
         (elapsed-time-milliseconds elapsed-time)
         milliseconds)))
See also

without-preemption


LispWorks Reference Manual - 23 Jul 2004

NextPrevUpTopContentsIndex