WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   mehrere DLL instanzen mit einem Programm (http://www.wcm.at/forum/showthread.php?t=48686)

Sonic 06.03.2002 01:56

mehrere DLL instanzen mit einem Programm
 
HI!

Weiss jemand ob und wenn ja wie man (in C) mehrere instanzen einer DLL macht?

Reicht es wenn ich mehrmals GetProcAddress aufrufe und unterschiedlichen Variablen(function pointern) zuweise?

"Pseudo" Code schnipsel:
Code:

...
 HINSTANCE hDLL;              // DLL Handle
 LPFNDLLFUNC1 lpfnDllFunc1;    // Function pointer1
 LPFNDLLFUNC2 lpfnDllFunc2;    // Function pointer2
 LPFNDLLFUNC3 lpfnDllFunc3;    // Function pointer3

 hDLL = LoadLibrary("MyDLL");
 if (hDLL != NULL)
 {
  //3 Instanzen von der DLL erzeugen ??
  lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL, "DLLFunc");
  lpfnDllFunc2 = (LPFNDLLFUNC2)GetProcAddress(hDLL, "DLLFunc");
  lpfnDllFunc3 = (LPFNDLLFUNC3)GetProcAddress(hDLL, "DLLFunc");
 }

...

Hintergrund:

Ich möchte ein Programm mit mehreren gleichzeitigen downloadthreads schreiben. Wenn ich aber die unterschiedlichen Sockets (DL threads) alle im Hauptprogramm behandle, dann blockiert jeder aufruf von recv (zum lesen vom Socket) das Programm. Wenn nun ein DL Thread mal eine schlechte Verbindung hat blockiert er alle anderen threads (während recv läuft).
Oder irre ich mich da!?

Und um mich nicht mit echten threads auseinander setzen zu müssen dachte ich mir ich schreib eine DLL mit der ich einen thread starte und die dann selbstständig runterläd.

Ich hoffe ihr habt ein paar Hinweise für mich bzw. andere Ideen wie ich mehrere nicht blockierende DL Threads machen kann.

Danke!

lg

ReiniBugman 06.03.2002 20:37

Ich würd asynchrone Sockets nehmen.

Siehe http://www.gamedev.net/reference/pro...res/asyncsock/

Sonic 06.03.2002 23:23

Zitat:

Original geschrieben von ReiniBugman
Ich würd asynchrone Sockets nehmen.

Siehe http://www.gamedev.net/reference/pro...res/asyncsock/

Das sowieso!
Nur ganz so asynchron sind die ja auch nicht.
Das ganze geht ja über die Windowmessages.
Ich denke mir wenn ich 5 DL sockets hab und "gleichzeitig" bei jeden in einen Buffer von 1 kb lese blockiert mir der gerade aktive ja die anderen.
Und ich dachte mir wenn ich das in eine DLL auslagere und 5 instanzen von der DLL in meine mProgramm habe, also jeder aktive Socket seine eigene WNDPROC hat, blockiert er die anderen nicht wenn einer mal eine schlechte verbindung hat.
Oder geht das sowieso nicht weil die sockets Windows intern sequenziell abgefragt werden?

lg

ReiniBugman 07.03.2002 00:44

Vielleicht hilft dir der Artikel ja weiter, mehr kann ich nicht mehr bieten...

http://msdn.microsoft.com/msdnmag/is...ck/winsock.asp

Sonic 07.03.2002 01:07

Danke, werd ich mir mal anschauen!

Ich glaub am besten ist es wenn ich das ganze einfach ausprogrammiere und teste. Dann bekomm ich sicher meine antworten. :)

lg


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag