' schrieb:Auswirkung: Es wird in Sekunden gezählt......
Ist der Zähler ein I32 oder ein DBL und zählt die Sekunden? 250h sind nicht wirklich viel, gerade mal knappe 1Mio Inkremente. Für DBL wie für I32 machbar.
Zitat:Das pass alles bis er z.b. von 248h 30min 50sec auf 245h 26min 40 sec springt. Die sprünge dabei sind willkürlich und treten auch nach keiner wiederkehrenden zeit auf. Alles dem Zufall überlassen.
Verdächtig.
Zitat:Da dies alles so zufällig passiert und nicht nach einem Schema d.h. nicht reproduzierbar liegt die Rechnerauslastung doch nicht so fern oder?
Ich sehe hier keine Verbindung (nicht mal ganz in der Ferne). Auch ein zu langsamer Rechner kann einen richtigen Algorithmus nicht dazu bringen, plötzlich falsche Werte zu produzieren.
Ich würde hier eher auf eine RaceCondition im weitersten Sinne tippen. Möglicherweise ein (im weitesten Sinne) Synchronisationsproblem.
Theorie:
Gesetzt der Fall, du hast in deinem Algorithmus die Bearbeitung eines ganz bestimmten Falles vergessen, dann wird es zu einem Problem kommen, wenn dieser Fall eintritt. Sei dieser Fall nun das Zusammentretten zweier Ereignisse, dann wird der Fehler nur dann auftreten, wenn beide Ereignisse zur gleichen Zeit auftreten. Und hier liegt jetzt das Problem: Wie oft müssen die Ereignisse jedes für sich auftreten, dass sie irgendwann mal gleichzeitig auftreten. Dauere jedes der beiden Ereignisse 10µs (+-1µs, Schwankungsbreite!) und tritt alle 1ms (+-10µs) auf, kann man eine Berechnung anstellen, wie oft jedes einzelne Ereignis eintreten muss, um plötzlich gemeinsam aufzutreten. In deinem Falle würde ich jetzt sagen: Ein Ereignis muss 1Mio auftreten, um mit einem zweiten zusammenzufallen, sodass ein Fehler resultiert: 1Mio*1Sekunde ca. 250Stunden. Das Inkrementieren z.B. kann als Ereignis aufgefasst werden. Salopp gesagt: Treten zwei Ereignisse zur selben Nanosekunde ein, passiert ein Fehler. Nanosekunde klinkt zwar wenig. Das ist aber eine Milchmädchenrechnung: Der Prozessor arbeitet nämlich so schnell und so viel, dass er innerhalb einer bestimmten Zeit einen Algorithmus Giga-Mal abgearbeitet hat - und dann erwischt er garantiert auch einmal diese eine Nano-Sekunde. Soviel zur Theorie (falls sie denn einer verstanden hat).
Derartige Effekte sind zwar mit Hardware leichter zu realisieren und zu verstehen. Nichtedestoweniger gilt das Prinzip aber auch für Software.
Ich gestehe, ich hab das selbst schon gehabt: Ein Array als globale Variable in zwei unabhängigen While-Schleifen geschrieben und gelesen. Das ging immer so etwa drei, vier Wochen Dauerlauf gut, bis plötzlich das Programm einen Bluescreen bekam. Dann hab ich mich doch dieser einen "Nonosekunde" erinnert und mir überlegt: Naja gut, theoretisch(?!) könnte dieser Effekt genau hier doch passiert .... Also: umgeschieben - und siehe da: Kein Fehler mehr. Da haben sich zwei Operationen, die jede für sich gerade mal 10ms dauern und nur (weis nicht mehr) einmal die Stunde gemacht werden, getroffen.
Ein zu langsamer Rechner mag die Wahrscheinlichkeit des Auftretens des Fehler positiv beeinflussen können (im Sinne, dass der Fehler eintritt) und umgekehrt. Der Fehler selbst liegt dann aber doch am Algorithmus, nicht an der Geschwindigkeit des Rechners.