Ein erstes Beispiel mit Koroutinen III

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

HaTschi.om
PROCEDURE Tschi(VAR ha, tschi: Coroutines.Coroutine);
   VAR
      main: Coroutines.Coroutine;
      i: INTEGER;
BEGIN
   main := Coroutines.current;
   SYS.CRSPAWN(tschi);
   i := 0;
   WHILE i < 10 DO
      Write.Line("Tschi!");
      SYS.CRSWITCH(ha);
      INC(i);
   END;
   SYS.CRSWITCH(main);
END Tschi;

*Die Prozedur Tschi notiert sich zunächst einen Verweis auf die aktuelle Koroutine, wenn sie aufgerufen wird. Das erlaubt später die Rückkehr zur Haupt-Koroutine, sobald die beiden Koroutinen ihr Wechselspiel beendet haben.
 
*Danach wird mit SYS.CRSPAWN(tschi); die neue Koroutine erzeugt, die dann später erst aktiviert wird, wenn die Koroutine ha zum ersten Mal nach tschi wechselt.
 
*Nach 10 Wechseln endet das Spiel mit SYS.CRSWITCH(main);. Dann geht es bei der Hauptkoroutine unmittelbar hinter dem SYS.CRSWITCH(ha); in der Prozedur DoIt weiter.
 

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