Programmieren mit Threads
-
Hallo,
wie in einem anderen Faden schon geschrieben, würde ich meinen Proxy gerne mit Threads ausstatten. Hierzu müsste ich an die Threadfunktion jedoch zwei Sockets (Parameter) übergeben. Ist dies möglich?
Hiermal der Threadaufruf in der main:CreateThread(NULL, 0,threadFunktion,(LPVOID)parameter, 0, &threadID);Da ich ja zwei Sockets habe, einen für Input und einen für Output, müsste ich ja eigentlich auch 2 Parameter übergeben???
Kann mir hierzu vielleicht jemand weiterhelfen, oder liege ich vielleicht ganz falsch?Schon mal vielen Dank im Voraus.
-
Erstelle dir eine Stuctur und übergib den Zeiger sdieser strucktur an deinem Thread, mußt nur sicher stellen das alles was du übergibst auch solange der Thread lebt existent ist.
Gruß Matthias
-
Erstelle dir eine Stuctur und übergib den Zeiger sdieser strucktur an deinem Thread, mußt nur sicher stellen das alles was du übergibst auch solange der Thread lebt existent ist.
Gruß Matthias
-
BTW:
Wenn die MFC verwendet wird, verwende auch AfxBeginThread.
Wird die CRT verwendet nutze _beginthreadex
http://blog.m-ri.de/index.php/2008/02/28/afxbeginthread-versus-_beginthreadex/
http://blog.m-ri.de/index.php/2007/11/28/createthread-und-die-crt/
-
Mr.Bean06 schrieb:
Hallo,
wie in einem anderen Faden schon geschrieben, würde ich meinen Proxy gerne mit Threads ausstatten. Hierzu müsste ich an die Threadfunktion jedoch zwei Sockets (Parameter) übergeben.
Meinst du nicht zwei Steckdosen an die Fadenfunktion übergeben?

-
Ja, das meinte ich, hatte doch auch geschrieben zwei Sockets.
-
Mr.Bean06 schrieb:
Was ist an dem, von mir verwendeten, Threadaufruf so schlecht?
Ich habe Dir zwei Links mit kompletter Erklärung gegeben... Lesen musst Du schon selbst!

-
Sorry, hatte die Links erst gar nicht wahr genommen, aber danke für die Info.
-
Mein Threadaufruf schaut nun so aus:
CreateThread(0, 0, vomClientZumServer, (LPVOID) &threadSockets, 0, 0);mit threadSockets übergebe ich die Struktur, die zwei Sockets enthält.
In der Threadfunktion dereferenziere ich diesen Parameter so:sockets threadSockets = (*)data;Leider bekomme ich dann diesen Fehler: error C2059: Syntaxfehler: ')'
Googlen hat mir leider noch keine Lösung gebracht, vielleicht kann mir ja jemand aus diesem Forum weiter helfen?
-
sockets threadSockets = (*)dataist auch ungültig. Müsste heißen:
sockets threadSockets = *reinterpret_cast<sockets*>(data)
-
Danke, so funktioniert es schon besser.