a99 alsparalleler Windowsproze"s und keychk
Heinrich Allers
allers at t-online.de
So Nov 24 14:31:01 CET 2002
Beim bisher noch erfolglosen Versuch, ein komplexeres Problem (jäher Abbruch eines a99-
Prozesses in dem Augenblick, in dem man auf einen anderen Windows-Prozeß wechselt, im
guten Glauben, der a99-Prozeß liefe weiter) auf der Plattform der Standard-Installation (Demo-
Datenbank) zu reproduzieren, bin ich auf ein Teilproblem gestoßen, dessen Lösung oder
Erklärung womöglich eine Hilfe bei der Lösung meines größeren Problems bilden könnte:
Ich setze folgende Flexdatei auf der Demo-Datenbank in Gang:
xport f xxx1.alg
xport p i-1
f |3 z?
dow set
/Zähler wird auf Null gesetzt
var "0"\ins #uz1
disp p d-wrtf
erase off
read file xxx1.alg
first off
:ausgabe
/Zähler wird um 1 erhöht:
var #uz1\=\var "1"\+\var Z\ins #uz1
/Durch Variation der sleep-Zeiten kann man den Prozeß
/mehr oder minder stark verlängern oder verkürzen,
/um ihn besser untersuchen zu können:
sho IV\sleep 300
disp\sleep 200
/Dieses ist die interessante Zeile:
keychk\if yes jump fertig
next off\if no jump fertig
jump ausgabe
:fertig
var "Fertig!"\mes
erase off\set db
end
Die eigentlich spannende Zeile ist die siebtletzte, die mit dem keychk-Befehl!
Wenn diese keychk-Zeile aktiv ist, läuft alles so, wie man es von Windows-Prozessen kennt und
erwartet: ich kann den a99-Prozeß verlassen, was anderes und jederzeit einen Zwischenbesuch
beim a99-Prozeß machen, um zu sehen, wieweit er ist, oder um bei ihm zu bleiben.
Anders dann, wenn die keychk-Zeile desaktiviert ist: Dann kann ich zu dem a99-Prozeß _nicht_
mehr zurückkehren solange der in der Flexdatei vorgesehene Ablauf noch nicht beendet und
äußerlich sichtbar mit der Meldung "Fertig!" abgeschlossen ist.
Beobachte ich das Geschehen mit dem "Task-Manager", dann sieht man, daß nach einigen
Durchläufen (auffälligerweise nicht gleich nach dem ersten!) ":ausgabe ... next off...jump
ausgabe" beim a99-Prozeß "Keine Rückmeldung" steht, und erst dann, wenn der Schluß obiger
Flexdatei (mit der Meldung "Fertig!") erreicht ist, wieder "Wird ausgeführt" vermeldet wird.
Diese komische Interdependenz zwischen 'keychk' und der Windows-Prozeßparallelität würde
ich gerne verstehen und unter den vielen sich bietenden Möglichkeiten ("a99-feature", "a99-
bug", "Windows-bug", "Windows-feature" oder schlicht eigener Ignoranz) einordnen können.
Mit besten Grüßen:
Heinrich Allers
allers at t-online.de, http://home.t-online.de/home/allers
Die Welt hat sich am 11.9.2001 nicht verändert, sondern uns ist einmal mehr gezeigt worden,
daß sie verändert werden muß / El mundo no ha cambiado el 11.9.2001, sino nos fue
demostrado una vez más que tiene que ser cambiado
Mehr Informationen über die Mailingliste Allegro