|
![]() ![]() ![]() ![]() |
![]() | 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 |