|
Für Koroutinen gibt es den Datentyp Coroutines.Coroutine.
Diese Datenstruktur besteht aus einem Stapel und die Position
der nächsten auszuführenden Instruktion.
| |
Das Modul Coroutines stellt ferner die Variablen
Coroutines.current und Coroutines.source
zur Verfügung, die auf die derzeit aktive Koroutine und die
davor aktive Koroutine verweisen.
| |
Im Modul SYSTEM gibt es die Operationen CRSPAWN
und CRSWITCH.
| |
PROCEDURE CRSPAWN(VAR cr: Coroutines.Coroutine); erzeugt eine neue Koroutine, wobei der neue Koroutinen-Stapel zunächst nur aus den Parametern und lokalen Variablen der aufrufenden Prozedur besteht. Die nächste Instruktion der neuen Koroutine liegt unmittelbar hinter der CRSPAWN-Anweisung. Die alte (aufrufende) Koroutine beendet sofort die Ausführung der Prozedur, als ob RETURN aufgerufen worden wäre. | |
Prozeduren, die sich zu neuen Koroutinen machen, müssen
globale Prozeduren sein und dürfen keinen Rückgabewert haben.
Ein RETURN der Koroutinen-Prozedur ist nach CRSPAWN
nicht mehr zulässig, da es dafür keine Rückkehrposition mehr
gibt.
| |
PROCEDURE CRSWITCH(cr: Coroutines.Coroutine); wechselt zu der angegebenen Koroutine. Die aufrufende Koroutine steht nach dem Wechsel unter Coroutines.source zur Verfügung. |
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005 |