Zum Inhalt springen

Thread-Progrmmierung


sandman

Empfohlene Beiträge

Hey ihr da!

Weiss jemand von euch wo es eine schöne Erklärung zum Thema Multithreading/Threadprogrammierung gibt?

Vielleicht kennt ja einer ein tutorial oder so.

Ich Programmiere zur Zeit nämlich n bisschen Winsock.:confused: :D

Und sobald das Programm die Funktion "recv()" ausführt, macht der nichts anderes mehr. Das recv() ist nämlich blockend.

Aber da ich ja nebenbei mit dem Programm noch was anderes machen will, ausser zu recieven brauch ich das Multithreading.

So, ich hoffe ich habe mich richtig ausgedrückt.

Danke schon mal...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe sowas noch nicht gemacht, allerdings sollte man asynchrone Abfragen glaub nicht über normales Multithreading machen, weil die WSA-Schnittstellen schon asynchrone Funktionen anbieten. Ich hab in der MSDN was gefunden, vielleicht bringt Dir das etwas:

Such mal nach WSOCK.C und beim Index nach WSAAsync....

bestimmt soll man das ganze so machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmm, etwas brauchbares konnte ich leider nicht finden...

Aber selbst wenn ich eine Asynchrone Abfrage auf Nachrichten machen könnte, bräuchte ich trotzdem Threads, da ich ja ständig auf Nachrichten abprüfen muss -->

Eine while(1)-Schleife würde dafür garantieren,

dass gesendete Nachrichten sofort gelesen werden -->

Aber solange ich in der while-Schleife bin, kann ich nichts anderes machen-->

Der selbe Effekt, wie bei recv()

Tja, am besten waere ein Handle, wie z.B. "onGetMessage()"!:D

Aber das gibts nur in VB und da ich gegen VB eine gewisse Abneigung habe, muss dass mit diesen Threads endlich funzen.

Trotzdem danke, cu

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die "normale" Threaderzeugung läuft über CreateThread()

CWinThread::CreateThread

BOOL CreateThread( DWORD dwCreateFlags = 0, UINT nStackSize = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

Oder in AFX verpackt:

CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

Mit TerminateThread() oder endthread() wird das ganze gestoppt. Es gibt auch noch Befehle um die Threads teilweise auf Eis zu legen. Zeitgesteuert läßt man das ganze über Timer-Interrupts laufen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@ all

Danke für die vielen Links und Vorschläge!

Jetzt funktioniert mein Prog auch endlich.

Wenn man sich Beispielprogramme anschaut, kriegt man halt doch am meisten mit...

Habe zuerst mit _beginThread() gearbeitet, doch dann kann man keine MFC-Methoden mehr verwenden.

Mit AfxBeginThread() hats dann aber geklappt.

@ root@localhost

Ich hab das mal probiert mit dem CAsyncSock, aber das hat irgendwie nicht hingehaun...

Das Wäre aber schon genial wenn man OnReceive(), OnConnect(), etc verwenden kann.

Naja, das schau ich mir später nochmal an, wenn ich mehr Zeit habe.

Ich bräucht halt ein Laptop in der BS, dann hätt ich genug Zeit für solche Sachen...:D

cu

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...