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