Das mit der geschlossen File hat kein unterschied gemacht.
Aber das mit dem Cachen ist vielleicht keine schlechte idee, allerdings hab ich kein plan wie ich das Realisieren soll.
Da ich ja nie weiss, welche bildnummern, ich in den nächsten 200 msec habe.
Bekomm nämlich alle 200 msec, 5 Bildnummern geschickt welche ich dann alle 40 ms abarbeiten muss.
Und es kann sein, das wir Bildnummer Increment von 100 haben.
Das hängt halt alles davon ab, wie schnell der zuf fährt im Steuersystem alle 200 msec.
Oder es kann langsamer werden, wenn gebremst wird.
Also wer ne idee hat, wie man sowas lösen kann... oder was für informationen man noch anhänhen müsste, das überhaupt cachen möglich ist.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also testweise solltest du es erst einmal mit einem 100er inc ausprobieren. Einfach nur um mal zu sehen ob meine Theorie überhaupt funktioniert.
Wie du es ansonsten lösen kannst hängt natürlich vollkommen davon ab wie eure Architektur aussieht und das weiß hier keiner. Deswegen ist das ein bisschen schwer zu sagen. Ich gehe da aber nur mal von der Realität aus und in der ist es so, wenn der Lockführer sagt er möchte schneller fahren, dass reagiert die Lock nicht sofort sondern brauch eine Weile und das sollte genügend Platz sein um 1-2 Sekunden Video zwischenspeichern zu können. Vor allem, da er sich nicht 200 ms vor dem Gleiswechsel überlegt zu wechseln oder zu bremsen. Evtl solltet ihr eure Berechnungen entsprechend weit ausholen und nicht den aktuellelen Zustand berechnen sondern wie es in 2 Sekunden aussieht etc. Da solltet ihr mal überlegen ob man da nicht so etwas machen kann oder was auch immer da möglich ist. Wenn die Abstände zwischen den Nummern immer gleich sind könnte man auch schauen ob sich die Abstände in der Letzten Sekunde verändert haben und wenn nicht ist die Wahrscheinlich groß, dass sie es auch nicht tun werden. Dann könnte man so Pi mal Daumen schon was laden.
Wenn du aber genügend Vorlauf hast, dann sollte das zwischenladen recht einfach sein. Vorrausgesetzt es funktioniert überhaupt. Du erstellst einen Thread der zeitnah nachschaut ob neue Bildernummern bekannt gegeben wurden. Und wenn dies der Fall ist lädt er sie in eine interne Liste. Der Client geht jetzt zum Thread und sagt gib mir mal Bild mit der Nummer XYZ. Der Thread schaut nach. Aha gefunden. Und liefert einen Pointer auf den Speicherbereich des bereits komplett geladenen Bildes zurück auf das der Client die Bilddaten nur noch hochladen muss. Wenn das getan ist sagt der Client lösche Bild XYZ und der Thread löscht es. Sollte es noch nicht geladen sein muss der Thread es augenblicklich zur Liste hinzufügen, den Ladeprocess anwerfen und warten bis er das Bild geladen hat. Es kann sein, dass er gerade dabei ist es zu laden. Evtl musst du da ein bisschen intensiv nachdenken und mit prioritäten arbeiten oder so. Der Thread muss da nämlich nach dem aktuellen Bild sofort das neue bearbeiten. Aber solche ein Fall sollte nach Möglichkeit vermieden werden.
Das Anwerfen des Laden würde ich so gestalten, dass ich eine Methode hat die in einer ThreadListe die entsprechenden Zahlen hinzufügt. Sind alle Zahlen hinzugefügt sagt er Update. Dabei wird dann ein Event ausgelöst. Das Execute wartet auf das Event. Und arbeitet dann alle angefallenen Bilder ab und legt sich wieder schlafen. Er sollte die Threadliste auchnur kurm locken um sich eine ID zu holen. Evtl solltest du bei den Bilden einen Timestamp anbringen. Sollte das Bild nicht innerhalb der nächsten 10 Sekunden abgeholt werden so wird es wieder rausgeschmissen. Einfach um zu verhindern, dass der Speicher voll läuft, wenn der eine Zeit lang aktiv ist.
Vielleicht muss das auch alles nicht so kompliziert werden, da der Client ja eigentlich genau die Bilder anzeigen soll die der Thread geladen haben muss. Und dann auch immer der Reihe nach. Dann könntest du immer das nachste Bild in der FIFO Liste benutzen ohne, dass der Client eigentlich weiß welche Nummer er da hat. Das vereinfacht das alles wieder.
Wie das alles genau auszusehen hat überlasse ich mal deiner Phantasie. Das ist aber nur ein Ideenauswurf.
Du solltest du dann auch mal folgende Methoden ansehen. SetThreadIdealProcessor und SetThreadAffinityMask
Es kann auch sein, dass Windows zwar die nächsten Bereiche chached du aber entsprechend große Sprünge machst und so das Chaching austrickst. So genau kann ich das aber nicht sagen. Könntest du sehen in dem du immer das nächste Bild benutzt.
PS: Bekomme ich da eigentlich bald Provision oder so etwas ähnliches?
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.