[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[DDL-ML] Timing Probleme



Hallo,

nachdem sich ja nun die Sache mit dem Thread-Problem geklärt hat, bin
ich auf eine andere Sache gestossen.

Mein Client verwendet die Timeout-Fähigkeit des erddcd, um SET GA
automatisch wieder auszuschalten. Das machen andere Clients
anscheinend nicht.

Trotzdem könnten Sie vielleicht auf folgendes Problem stossen: Es wird
eine Weiche mit SET GA angesteuert. Der Befehl wird in der Queue
abgelegt. Wenn die Queue aber relativ voll ist, dauert es einige Zeit,
bis der Befehl die Weiche erreicht. Der Client wartet einige ms, bis
er die Ansteuerung der Weiche mit einem neuen SET GA wieder
ausschaltet. Die Länge der Queue kann nun kürzer sein, so dass dieser
Befehl sehr schnell bis zur Weiche kommt.

Was ich damit verdeutlichen will, ist, dass der Client keine wirkliche
Kontrolle darüber hat, wie lange die Ansteuerung der Weiche
tatsächlich ist. Es kann sein, dass die Zeit zu kurz ist und die
Weiche daher nicht schaltet.

Zugegeben, dieser Fall ist nicht so sehr wahrscheinlich. Vor allem,
wenn die Timeoutsteuerung im Client vorgenommen wird und nur ein
Client da ist, dürfte nichts passieren.

Sobald aber mehrere Clients den Server ansprechen, kann die Queue
länger werden und Probleme auftreten.

Und die Probleme können bei mir auftreten: Ich habe vor eine einfache
Ansteuerung von Weichenstraßen zu implementieren. Dazu ist es
notwendig, mehrere Weichen direkt hintereinander anzusteuern. Verwende
ich dazu den Timeoutmechanismus des Servers, führt das dazu, dass ich
sehr schnell meine Weichenstellbefehle in die Queue kriege. Für jeden
dieser Befehle wird ein Thread angelegt, der das Ausschalten
übernimmt. Diese Threads werden alle sehr schnell erzeugt und schalten
den Schaltstrom aus, sobald die vordefinierte Zeit abgelaufen
ist. Diese Zeit ist jedoch nicht abhängig vom Zeitpunkt des
Einschaltens sondern vom Zeitpunkt des Einstellens des Schaltbefehls
in die Queue.

Wie gesagt, das Problem taucht auch in dem Fall auf, dass mehrere Clients
die Queue füllen. Es besteht keinerlei Kontrolle darüber, wann der
Befehl wirklich auf die Leitung geht. Diese Kontrolle hat
ausschließlich der Server. Daher kann es auch nur die Aufgabe des
Servers sein, nachdem dem Schaltbefehl gesendet wurde eine gewisse
Zeit zu warten und automatisch den Ausschaltbefehl zu senden.

Ok, man könnte natürlich über den Info-Port die Information versenden,
dass nun wirklich der Schaltbefehl rausgegangen ist. Dann könnte der
Client diesen Zeitpunkt nutzen, um zu warten und auszuschalten.

Was haltet Ihr von den Gedanken? Bin ich zu pessimistisch oder kann
dies wirklich zu einem Problem führen? Wobei man sich nicht von Pessimismus leiten lassen sollte, sondern von harten Fakten...

Ade
  Peer.

_______________________________________________________________________________
Alles unter einem Dach: Informationen, Fun, E-Mails. Bei WEB.DE: http://web.de
Die große Welt der Kommunikation: E-Mail, Fax, SMS, WAP: http://freemail.web.de