|
|
PROCEDURE Ha(VAR ha, tschi: Coroutines.Coroutine);
BEGIN
SYS.CRSPAWN(ha);
LOOP
REPEAT
Write.String("Ha");
UNTIL Random.Val(1, 5) = 1;
SYS.CRSWITCH(tschi);
END;
END Ha;
|
![]() | Gleich zu Beginn des Aufrufes erzeugt die Prozedur Ha
eine neue Koroutine. Über den Referenz-Parameter ha
erhält der Aufrufer einen Verweis auf die neu geschaffene
Koroutine.
|
![]() | Der Referenz-Parameter tschi hat zunächst einen
undefinierten Wert. Aber sobald die so referenzierte
Variable beim Erzeugen der nächsten Koroutine durch Tschi
einen Wert erhält, wird er hier zugänglich.
|
![]() | Erst mit dem Aufruf SYS.CRSWITCH(ha); findet der
erste Wechsel von der Haupt-Koroutine zur Koroutine ha statt.
Diese beginnt dann ihre Ausführung ab dem LOOP, also
unmittelbar hinter SYS.CRSPAWN.
|
|
| Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005 |