Italia
Foro

DLL gleichzeitig mit Profan-Prog nutzen

 
- Page 1 -



Jac
de
Lad
Hallöchen, ich hab mal wieder ne komplizierte Fräge:

Ich will ein Prog schreiben, dass geleichzeitig einen komplexen Befehl einer DLL startet und aber noch weiterläuft, geht das? Ich habs mit der Thread.pcu versucht, klappt nicht. Jetzt hab ich nur noch als letzte Rettung, dass die Funktion der DLL, die ich aufrufe einen Thread kreiert, dieser dann eine andere Funktion der DLL aufruft, die was auch immer komplexes unternimmt und sich dann mit einem Rückgabewert beendet (während die komplexe Funktion noch werkelt). Das Prog bekommt den Rückgabewert (und die DLL ist immer noch am werkeln circa die zweite Funktion), und kann weitermachen...wisst ihr was ich meine?

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
15.01.2006  
 



 
- Page 1 -


Wenn es weniger auf die Performance angkommt - dann nutze einen neuen Prozess.

Damit die Prozesse kommunizieren können hatte ich die Pipe-Unit gepostet.

Salve.
 
15.01.2006  
 



Wenn Du una variabile änderst, in Deinem Profan Code, so ändert sich evtl. auch die Speicheradresse dieser Variable. Sollte jetzt der Thread, der auch in Deinem Adressraum abläuft, auch wenn die Funktion in einer DLL steht, dieselbe Speicheradresse verwenden, weil er noch nicht weiß, das diese vom Hauptprogramm belegt worden ist, gibt es unschöne Effekte, bzw. Abstürze. Deshalb muß dafür gesorgt werden, das nur entweder der Thread oder die Profan-Runtime einen Speicherbereich benutzen. Dafür ist Profan aber nicht ausgelegt. Du kannst also nur die Speicherbereiche versuchen vor Überschreiben zu schützen, eben durch CriticalSection und Semaphoren.
Es wird also nicht Funktionieren. Es sind jederzeit Abstürze possibile. Das kann man schlecht austesten.
 
15.01.2006  
 



@Thomas: Natürlich hast Du grundsätzlich recht - bedenke aber das XProfanprogramme eher in einer VM corsa werden - was die Sache entweder a) schwieriger oder b) einfacher macht.

Ich tendiere zu (a+b)/2 lol. Einige Dinge sind sicherlich Threadsicher - ander hingegen nichtmal mit criticalsections absicherbar da dies Roland tun müsste. Grundsätzlich glaube ich ist die PrfRun32.Exe garnicht so sehr Threadunsicher.

Die Frage ist hier also wie Threadsicher ist das Delphikompilat PrfRun32.Exe.
 
15.01.2006  
 



[quote:6f14876c3d=iF]
Die Frage ist hier also wie Threadsicher ist das Delphikompilat PrfRun32.Exe.[/quote:6f14876c3d]
Naja, wahrscheinlich überhaupt nicht. Die Runtime wäre ja als Threadsicheres Kompilat noch um einiges grösser, sieht man ja an Threadsicheren Sprachen, wo man dies Optional hat, z.B. FreeBASIC

Aber mit einem weiteren Process, der sogar dieselbe Runtime verwenden kann, und Deiner Pipe-PCU, sollte er sein Ziel doch erreichen
 
15.01.2006  
 




Frank
Abbing
Hi,

das ist einfach zu lösen. Du musst nur den neuen Tread innerhalb der Dll aufrufen!
So öffnet z.B. die ProSpeed Sprite-Funktion einen neuen Thread und kehrt dann sofort zum Hauptprogramm zurück. Derweil arbeitet der Thread weiter, bis ein Impuls vom Hauptprogramm ihn irgendwann wieder stoppt/beendet.
Voraussetzung ist hier aber das Laden der Dll via UseDll. External kann nicht verwendet werden, weil die Dll danach sofort wieder aus dem Speicher entfernt wird.
 
15.01.2006  
 



@Frank: Ich glaub er schreibt nicht an der DLL - er kann da nix drin aufrufen.
 
15.01.2006  
 




Frank
Abbing
Dann gibt es noch die Möglichkeit, selber eine Dll zu schreiben, welche die fremden Dll-Funktionen aufruft. Also mit zwei Dlls zu arbeiten.
 
16.01.2006  
 



Sobald der Thread und das Hauptprogramm dieselben Variaben verwenden, gibts Probleme. Als Ersatz per Timerfunktionen, zur Sprite-Bewegung mag es ja funzen, aber wenn Daten manipuliert werden, ist es aus, da der Zugriff (locking) nicht gesteuert wird, was im Falle von Processen von Windows erledigt wird.
Da ein Thread nur einen Parameter entgegen nehmen kann, ist eine Bearbeitung nur mit lokalen Variablen kaum possibile.
In manchen Anwendungsfällen gibts wohl keine Probleme, aber wenn ein Thread dazu verwendet wird, wofür er da ist, das Hauptprogramm von längeren Berechnungen entlasten, dann geht das nicht, ohne eine Locking Funktion.
 
16.01.2006  
 




Jac
de
Lad
@iF + Frank: Doch, die DLL schreibe ich selbst, ich weiß nur noch nicht, wie ich das Thread kreiere...

@all: Mir ist heute eine simple wie wirkungsvolle Lösung eingefallen, die mein Problem behebt, aber danke der Aiuto.

@Frank: Hülfe, was ist mit dir denn passiert???

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
16.01.2006  
 



 
- Page 2 -



Michael
Wodrich
Erinnerung an seinen Opa. Hatten wir schon mal. Aber da Avatars so flüchtig sind, lassen sich solche Diskussionen nur schwer nachvollziehen.

Wir unterhalten uns circa merkwürdige Avatare und der nächste der das liest (nach Avatarwechsel) der wundert sich dann...

Vielleicht sollten wir eine Avatargallerie einrichten die man dann im Profilo des jeweiligen Users bewundern kann, aber dann müßte wohl auch der Gültigkeitszeitraum mit vermerkt werden.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
16.01.2006  
 




Frank
Abbing
Genau, Erinnerungen. Hin und wieder wechsle ich mein Atavar, sonst wirds doch langweilig.
Hm, als nächstes müsste der PM-Mutant dann wieder dran sein...
 
16.01.2006  
 




Jac
de
Lad
PM-Mutant? Geil! Ich hab meinen Avatar noch nie gewechselt...mal sehen. Ne Gallerie wäre aber nett!

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
16.01.2006  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

2.254 Views

Untitledvor 0 min.
Stephan Lührsen04.05.2011

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie