Previous Section | Next Section | Table of Contents | Glossary | Index |
Much of the functionality described above is similar to that provided by Clozure CL's cooperative scheduler, some other parts of which make no sense in a native threads implementation.
PROCESS-RUN-REASONS and PROCESS-ARREST-REASONS were SETFable process attributes; each was just a list of arbitrary tokens. A thread was eligible for scheduling (roughly equivalent to being "enabled") if its arrest-reasons list was empty and its run-reasons list was not. I don't think that it's appropriate to encourage a programming style in which otherwise runnable threads are enabled and disabled on a regular basis (it's preferable for threads to wait for some sort of synchronization event to occur if they can't occupy their time productively.)
There were a number of primitives for maintaining process queues;that's now the OS's job.
Cooperative threads were based on coroutining primitives associated with objects of type STACK-GROUP. STACK-GROUPs no longerexist.
Previous Section | Next Section | Table of Contents | Glossary | Index |