BMax und Multi Threading

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

tft

Betreff: BMax und Multi Threading

BeitragSo, Feb 04, 2007 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo...

ich habe in den einschlägigen Archiven schon zu diesem Thema gesucht. Leider sind alle relevanten Links dazu schon älter als 2 Jahre und nicht mer funktions fähig. Gibt es ein MOD zu diesem Thema.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

hamZta

Administrator

BeitragSo, Feb 04, 2007 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
MT ist, soweit ich das mitbekommen habe, bin kein Profi auf dem Gebiet, in BlitzMax nicht empfehlenswert, da der Garbage Collector NICHT MT-fähig ist.
Das kann dann zu unerwarteten Ergebnissen / Abstürzen kommen.

Mal abwarten, vielleicht wird daran ja noch gearbeitet.

hamZta
Blog.
 

Dreamora

BeitragSo, Feb 04, 2007 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax ist nicht multithreading Safe und das kann auch nicht durch Module nachgerüstet werden.

Die Module sind insofern wertlos, auf einem richtigen Multicore / Multiprozessor System gibt es binnen Sekunden einen GC Zusammenbruch, ähnlich dem welchen du erhälst wenn du C++ Callbacks nutzt und Referenzen raus gibst anstatt etwas was nicht gemanagt ist. Das Problem dort tritt IMMER auf wenn der Callback länger aktiv ist als die Zeitspanne bis zum nächsten GC Check der Referenzen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

tft

BeitragMo, Feb 05, 2007 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ...

die Probelmatik ist einleuchtend. Gibt es denn einen gescheiten weg, einen Adressraum als Shared zu deklarieren und über zwei separate Task darauf zuzugreifen. Das würde mir schon genügen. Ist zwar keine gute Lösung. Aber wen es geht hilft es für den Moment weiter.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

BtbN

BeitragMo, Feb 05, 2007 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin mir sicher, wenn es ginge, hätte es schon wer gemacht.
 

Dreamora

BeitragMo, Feb 05, 2007 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Jupp, du kannst Adressraum zwischen BM Apps sharen, zumindest unter Windows. War auch erst der Überzeugung das es nicht geht, wurde dann aber im englischen Forum eines besseren belehrt von einem "Hacker" der die Lösung lauffähig aufgezeigt hat.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BtbN

BeitragMo, Feb 05, 2007 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Link bitte. Wüste nicht nach was genau ich da suchen müste.
 

Dreamora

BeitragMo, Feb 05, 2007 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach dem Zauberwort Multithreading Smile

http://www.blitzbasic.com/Comm...705#734044
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

tft

BeitragDi, Feb 06, 2007 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo...

grundsätzlich ist der ansatz ja gut... bei genauerem hinschauen kann der Code aber kaum stabiel laufen. Kein Locks und Unlocks. Ausserdem ist das Beispiel nur als Consolen anwendung lauffähig.......

Ich breuchte da schon etwas konkreteres. Grundsätzlic heinmal ein Dankeschön..... die Infos helfen mir fieleicht weiter...

Wenn jemand sowas lauffähig hat... würde ich mich freuen.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
 

Dreamora

BeitragDi, Feb 06, 2007 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem Lock stimmt, lässt sich jedoch eigentlich über Mutex erzwingen, müsstest du dir jedoch selbst implementieren.
Ich kann mich erinnern auch Mal irgendwo etwas mit den RTL Memory Funktionen der Windows API gesehen zu haben, das auf etwas ähnliches hinaus läuft.

Ansonsten bleibt nur Pipe oder direkte kommunikation mit UDP / TCP zwischen den Programmen, was beides den nachteil hat das du die Daten "versandtauglich" machen musst und durch auch wieder nutzungstauglich.

Abhängig von den Daten würde irgend ein Freak jetzt natürlich auch einfach sagen: MySQL nehmen und das als "zwischenlayer" nehmen, wenn du dir ms zugriffszeiten leisten kannst Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

tft

BeitragMi, Feb 07, 2007 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi....

habe auch schon darüber nachgedacht eine art RamDisk zu erzeugen. Das funktioniert aber unter VISTA garantiert nicht mer. Und dann habe ich als ansatzt versucht die Cache Funktion des Filesystems zu missbrauchen. Da hapert es mit der Syncronisation... ausserdem fehlt mir die möglichkeit eine art Sheduller zu Coden der das dann Absturtzfrei in Max umsetzt. Denn bei einem lese versuch eines Taskes auf ein File das von einem anderen Task erzeugt wir. Wird das lesende Programm ohne fehlermeldung abgebrochen. Dabei dachte ich immer die File Functionen sind Wasserdicht. Es gibt mit sicherheit funktionen die das Pagefliping von einem Task zum anderen erlauben. Nur leider bin ich in API nicht sehr bewandert.
Sollte ich von selber auf eine passable lösung kommen ..... wandert sie natürlich ins Code Archiv.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
 

Dreamora

BeitragMi, Feb 07, 2007 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Die einzige Lösung die ich dir sonst zu bieten habe ist das zweite Programm in eine DLL zu schieben und via Memory die Daten zu syncronisieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group