Erfahrungen mit FastPointer?
Übersicht

![]() |
EingeproggtBetreff: Erfahrungen mit FastPointer? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Abend,
Ich spiel mich schon wieder mit einer Lib für Blitz mit der man einem Programm das gewisse Extra verpassen könnte - wenns klappt. Bei mir natürlich mal wieder nicht... (Gleich vorweg: Ich versuchs mit der FastPointer-Lib weil die Libs von SilverKnee und Xaymar ja auch nicht so das Gelbe vom Ei sind (verbuggt bzw. nur begrenzt lauffähig)) Folgendes: Ich verwende die FastPointer.dll um eine Funktion "im Hintergrund" laufen zu lassen. Also das is ne Funktion mit eigener hauptschleife und Timing und die rennt dank eigenem Thread parallel - soweit so gut. Klappt auch alles. Kommunikation muss soweit ich das sehe über globale Variablen erfolgen (Nur ein Integer Parameter bei dieser Lib erlaubt, keine Return Werte) - Auch das krieg cih ja noch hin - hab mich bei der ganzen Geschichte an "Example_ThreadsUse.bb" gehalten. Jetzt hab ich bloß das Problem dass irgendwann * scheinbar keine Globals mehr verfügbar sind - weder für den THread noch für das Hauptprogramm (Wenn ich mir im Debuglog eine Variable ausgeben lasse dann ist die plötzlich leer) - kurze Zeit später krieg ich dann n MAV an den unterschiedlichsten und verrücktesten Stellen - oder auch einfach nur n kompletter Freeze. *) Ich vermute es hat was mit andere Fenster aktivieren / minimieren / etc. zu tun aber genau kann ichs nicht sagen. Jedenfalls is das Verhalten mit und ohne Blitz-Debugmode dasselbe. Hab schon versucht meine Funktion etwas um-zu-designen und Fehlerquellen auszuschließen... (Weitere Funktionsaufrufe eigener Funktionen vermieden, kein Zugriff auf Types mehr, keine Debuglogs) aber es läuft immer aufs selbe raus. Interessanterweise is mir das "Kunststück" dass es derart abstürzt beim Sample noch nicht passiert... Hat jemand vlt Erfahrungen mit dieser Lib und kann mir Tipps geben? Ich würde demjenigen auch meinen kompletten Code zum Testen geben. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
hey probier mal als integer n handle von nem object zu übergeben..
Die fastpointer macht so wie ich das gesehn habe nichts anderes als Noobodys lib nur dass die n offset draufaddieren um den Funktionspointer direkt zu bekommen. Daher haste normalerweise auch mit den gleichen problemen zu kämpfen. |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da du in BB keine Mutexes oder sonstige mittel zur synchronisierung zur verfügung hast darfst du nicht mit dem Thread auf die selben ressourcen zugreifen wie der Haupt-Prozess.
D.h. nicht geteilte globals verwenden, oder ein gemeinsames Type-Objekt benutzen. Im prinzip garnicht kommunizieren, während der Thread läuft. |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie wärs damit
BlitzBasic: [AUSKLAPPEN]
|
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich fürchte, dass auch New![]() Die einzige sichere Möglichkeiten geht also über Mutexe und co. Es müsste einfach mal jemand eine passende Lib dazu schreiben ![]() |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber wenn man das genau so macht wie in dem beispiel würde es nur schief gehen wenn man 2 Threads gleichzeitig startet, oder? | ||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mich nun an die Vorschläge von btbN bzw. SilverKnee gehalten (zusätzlich noch das beachtet was hier als Hinweise gegeben wurden) und dann noch desöfteren herum getestet, also ich habe nur Erfolg wenn ich:
-) keine globals, -) keine Types, -) keine Debuglogs verwende -) die Threads immer brav wieder schleiße (FreeThread) (*) Ich starte meinen Thread nun und geb ihm das Handle zu einer Bank in der alles weitere drin steht, das funktioniert zum Glück. Nun komm ich leider nicht drauf was ich tun kann, um Rückmeldungen vom Thread zu erhalten? Das ist auch für den oben markierten Punkt (*) wichtig, da ich ja nicht sagen kann wann ich den Thread beenden kann - bis jetzt geschieht das nach Gefühl nach 3sek. - aber was wenn er dann noch nicht fertig ist? (Im Thread geht es darum einen TCP-Ping auszuführen.) Also ich wiederhole: Ich kann keine Globals setzen, keine Types erstellen und nichtmal in die übergebene Bank etwas hineinschreiben (das führte auch zum Chaos). Den Return-Wert meiner im Thread ablaufenden Funktion kann ich ja auch nicht kriegen oder? Wie soll man dann die Ergebnisse des Threads verarbeiten? ![]() Ergänzende Frage @SilverKnee: Die von dir gepostete Userlib is ja auch ganz schön - sogar noch einfacher. Dort soll das ja gehn mit Globals? Aber warum, im Prinzip baust du doch auf den selben Mechanismen? Außerdem stört der "Absturz" beim Beenden des Blitz-Programms... gibts da mittlerweile ne Lösung dafür? Danke für die bisherige Beteiligung hier! mfG, Christoph. EDIT Hmm... ein Programm, das sich selbst UDP-Nachrichten sendet zum Datenaustausch. Phantasievoll, nicht? ![]() Der erste Versuch hat grad geklappt, aber ob diese Vorgehensweise "serienreif" ist? Wenn jemand bessere Ideen hat bitte noch melden! |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Namedpipes sind das mittel der Wahl wenn du andersweitig nicht kommunizieren kannst. | ||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
An die dachte ich auch zuerst, aber hab mich überhaupt nicht ausgekannt mit der MSDN Beschreibung ![]() Naja, im Moment hab ich eh schon wieder die "üblichen" Wickel dass sich wieder alles zerschießt (nach so etwa einer Minute längstens) - Dabei hab ich jetzt wirklich alles sehr scharf getrennt, der Thread arbeitet nur mit lokalen Vars... |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group