DEFINITION MODULE Processes; (* Module: Processes From: "Programming in Modula-2", 3rd, corrected edition, by N. Wirth Version: $Header$ *) (* As discussed in "Unfair Process Scheduling in Modula-2", by D. Hemmendinger, SIGplan Notices Volume 23 nr 3, march 1988, the scheduler in this module is unfair, in that in some circumstances ready-to-run processes never get a turn. *) TYPE SIGNAL; PROCEDURE StartProcess(P: PROC; n: CARDINAL); (* Start a concurrent process with program "P" and workspace of size "n" *) PROCEDURE SEND(VAR s: SIGNAL); (* One process waiting for "s" is resumed *) PROCEDURE WAIT(VAR s: SIGNAL); (* Wait for some other process to send "s" *) PROCEDURE Awaited(s: SIGNAL): BOOLEAN; (* Return TRUE if at least one process is waiting for sinal "s". *) PROCEDURE Init(VAR s: SIGNAL); (* Compulsory initialization *) END Processes.