| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version |
Arguments: &body body
Use of this macro and the related without-interrupts is deprecated and a warning will be signaled if they are used. See smp.htm for full details, but in brief, without-interrupts and sys:without-scheduling effectively provided object locking -- because they prevented process switches, and only one Lisp process could ever run at a time, no object could be modified by another process while code wrapped in the macros was being run. In an SMP Lisp, that is no longer true because processes can run on separate processors simultaneously. Therefore, object locking must be achieved in some other fashion. See smp.htm for links to object locking functionality.
Uses of without-interrupts
and sys:without-scheduling
will signal a warning. That warning can be muffled by
evaluating (setq excl::*warn-smp-usage* nil)
.
Even though its use is deprecated, sys:without-scheduling and without-interrupts will continue to exist and work in non-SMP images as they have in earlier releases and currently. Users who do not wish to use SMP can use non-SMP images, which will be available on platforms which support SMP along with SMP images and need not modify their code at all because of the introduction of SMP (beyond suppressing the compiler warning as described above).
This macro inhibits the system from suspending a process involuntarily (asynchronously) during the execution of body. However, the system will run another process if the current process blocks, waits, or executes a process-allow-schedule. Note that without-scheduling returns a single value, not multiple values. without-scheduling is intended to be used around short critical sections of code, and perhaps to be called frequently, so possible overhead of allocating multiple returns is avoided by returning a single value.
See also without-interrupts and multiprocessing.htm for general information on multiprocessing in Allegro CL.
Copyright (c) 1998-2022, Franz Inc. Lafayette, CA., USA. All rights reserved.
This page was not revised from the 10.0 page.
Created 2019.8.20.
| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version |