Ein erstes Beispiel mit Koroutinen II

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]

HaTschi.om
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.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005