![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Master
![]() |
![]() 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"); } ... 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
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
![]() |
![]() |
![]() |
#2 |
Jr. Member
![]() Registriert seit: 13.09.2001
Beiträge: 83
|
![]() |
![]() |
![]() |
![]() |
#3 | |
Master
![]() |
![]() Zitat:
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
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
|
![]() |
![]() |
![]() |
#4 |
Jr. Member
![]() Registriert seit: 13.09.2001
Beiträge: 83
|
![]() Vielleicht hilft dir der Artikel ja weiter, mehr kann ich nicht mehr bieten...
http://msdn.microsoft.com/msdnmag/is...ck/winsock.asp |
![]() |
![]() |
![]() |
#5 |
Master
![]() |
![]() 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
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|