Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele

Koroutinen


Koroutinen sind einfach und lassen sich universell einsetzen, selbst wenn die verwendete Programmiersprache sie noch nicht direkt unterstützt. Insbesondere benötigen sie keine besondere Unterstützung durch das Betriebssystem.

Folgende Punkte sind bei Koroutinen wesentlich:

Die folgenden Beispiele zeigen Koroutinen in ihrer Grundform. Normalerweise benötigt man auf Basis der Ulmer Oberon-Bibliothek nur SYSTEM.CRSPAWN zum Kreieren neuer Koroutinen und nicht SYSTEM.CRSWITCH. In einer Reihe von Fällen läßt sich sogar die Verwendung von SYSTEM.CRSPAWN vermeiden.

HaTschi
Ein klassisches Trivial-Beispiel mit zwei sich wechselseitig aktivierenden Koroutinen.
ProdCons
Ein konkretes Beispiel für das Produzenten/Konsumenten-Problem.
Collections-17
Hier wird demonstriert, wie Koroutinen, die implizit von dem Modul Iterators erzeugt werden, statt First und Next zum Durchlaufen von Kollektionen eingesetzt werden können.

Mehr Informationen zu Koroutinen gibt es

Zu beachten ist auch noch folgender Hinweis: Wenn Sie anderen Oberon-Implementierungen begegnen, z.B. denen aus Zürich, dann können Sie leider nicht damit rechnen, daß Koroutinen oder andere Mechanismen zur Parallelisierung unterstützt werden. Obwohl diese Unterstützung kaum vorhanden ist, ist sie für viele Bereiche (insbesondere Netzwerkprogrammierung) und zur Erzielung von Dezentralisierung (und damit Erweiterbarkeit) essentiell.


WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele

Andreas Borchert, 8. Januar 2001