AW: avanti-cl: Programmdatei erneuert
Konsistorium EKsOL
allegro at eksol.de
Mi Mai 8 09:34:50 CEST 2002
Herr Berger schrieb:
>Nein. Nonblocking ist nicht asynchron. Das ist FUD von $Bill.
>Man kann mit select() durchaus Daten lesen, ohne sich dabei
>permanent aufzuhaengen. Das ist auch das Prinzip hinter Medusa.
>Asynchron braucht man, wenn man nebenher im gleichen Thread
>noch andere Dinge erledigen will, dann kann es unter Umstaenden
>in einem asynchronen Modell auch eine logische Vereinfachung
>geben.
Richtig, das habe ich vermischt.
>Nadeloehr ist meistens das Prozess-Starten. Ich koennte mir vorstellen,
>dass ein avanti-cl, das sich nicht beendet, sondern nur
>neuinitialisiert,
>bis es tatsaechlich ein EndOfFile oder ein "Geh Sterben"-Kommando
>bekommt, sogar schneller waere als avanti-w.
Sie wollen also die Pipes offenhalten und wieder mit AVANTI:EOJ ...
arbeiten?
Wir waren schon bei den Sockets immer schon verschiedener Auffassung ob
offenlassen (Berger) oder unbedingt zumachen (Bachschneider).
Aber Sie bringen mich doch allmählich auf den Geschmack. Siehe unten.
>Besonders gut koennte ich mir vorstellen, dass ein procav/avanti-cl, das
>die .CFG und .API etc. nur einmal einliest, gewaltige Vorteile bringt
>(und der Nachteil ist nur, dass man eine zweite Verbindung zu
>avanti braucht, wenn man in der selben Sitzung eine zweite
>Datenbank abfragt).
Oder man schließt die Sitzung und öffnet eine zu einem anderen Avanti.
Mit anderen Worten: Ein gestarteter Avanti bedient immer genau nur eine
Datenbank.
Gefällt mir, denn:
>Ich habe aber beim Lesen der Dokumentation nicht unbedingt den
>Eindruck gewonnen, dass es ein Werkzeug zur Serverifizierung
>von Nicht-Servern ist, obwohl man evtl. mit Medusa etwas
>bauen kann, was mehrere avanti-cl quasi auf Vorrat schon
>einmal aufstartet und einkommende Anfragen dann auf einen
>der Prozesse verteilt.
so könnte man die avanti-cl´s schon mit .CFG und .API initialisieren.
Es wären also zwei oder drei Änderungen am Avanti-cl nötig:
1) Bearbeitet Job nach AVANTI:EOJ ohne sich selbst zu beenden
2) Läßt sich mit Datenbankangabe initialisieren
3) Terminiert sich selbst bei EOF, oder optional nach einem Timeout
Die Initialisierung ließe sich ja mit einem Job bewerkstelligen, sofern
Avanti .CFG und .API
nur dann wieder freigibt wenn ein Folgejob eine andere Datenbank anfordert.
Damit hätte man
auch das Problem "zweite Verbindung" gelöst.
Und wenn man es recht bedenkt, war es immer schon Quatsch die
Datenbankangabe im Schlußstring
zu führen und nicht als set DB=
Ihre Vorschläge führen auch aus der Verlegenheit heraus, eine DLL oder
Sprachbindung haben zu müssen.
MfG
Volker Bachschneider
Mehr Informationen über die Mailingliste Allegro