7 lines
3.6 KiB
Plaintext
7 lines
3.6 KiB
Plaintext
en·vÅos PREEMPTIVE
|
||
2
|
||
|
||
4
|
||
|
||
1
|
||
|
||
PREEMPTIVE
|
||
1
|
||
|
||
4
|
||
|
||
By: Larry Masinter (Masinter.pa@Xerox.com)
|
||
This module turns on pre-emptive process scheduling. Using IL:\\PERIODIC.INTERRUPT, it forces a block in whatever process is running.
|
||
(IL:PREEMPTIVE &OPTIONAL STATE) [Function]
|
||
The function PREEMPTIVE turns preemptive process scheduling on and off. (IL:PREEMPTIVE ':ON) turns it on, (IL:PREEMPTIVE ':OFF) turns it off. (IL:PREEMPTIVE) with no argument returns the current state with no change.
|
||
WARNING WARNING WARNING WARNING DANGER DANGER DANGER DANGER
|
||
PREEMPTIVE is dangerous. Many places in the system do not have monitor locks and other mechanisms to prevent one process from overwriting the data of another in the face of preemptive interrupts. (Most do, of course.)
|
||
I've run with preemptive scheduling turned on for weeks, and about once a day, my screen gets trashed, windows and menus overwritten, etc. This version of PREEMPTIVE is a little more conservative than previous versions, e.g., it checks to see if the system is running in the MENU code and doesn't do a process switch. However:
|
||
USE AT YOUR OWN RISK. CAUTION CAUTION.
|
||
NOTE: Using SPY turns preemptive scheduling OFF. |