sandman Geschrieben 28. Januar 2002 Geschrieben 28. Januar 2002 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: 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... Zitieren
Crush Geschrieben 28. Januar 2002 Geschrieben 28. Januar 2002 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. Zitieren
sandman Geschrieben 28. Januar 2002 Autor Geschrieben 28. Januar 2002 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()"! 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 Zitieren
root@localhost Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 Hi sandmann, probiers mal mit der Klasse CAsyncSocket. Bei der sind schon virtuelle Funktionen dabei wie z.b. OnAccept() die man selber überschreiben kann. Vielleicht hilfts dir ja noch was. ich poste später noch mal ein paar linkz dazu aber jetzt muss ich weg -> MITTAGSPAUSE ! bis denne servas jj Zitieren
root@localhost Geschrieben 30. Januar 2002 Geschrieben 30. Januar 2002 also nochmal die links zu CAsyncSocket: http://www.rad.com/networks/1999/sockets/Sock&MFC.htm#CAsyncSocket http://ourworld.compuserve.com/homepages/tamareg/TechHelp/CPPSockets.html#Async OnAccept www.google.de? Zitieren
Crush Geschrieben 1. Februar 2002 Geschrieben 1. Februar 2002 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. Zitieren
goepp Geschrieben 1. Februar 2002 Geschrieben 1. Februar 2002 hallo! evtl. hier: http://freenet.meome.de/app/fn/artcont_portal_news_article.jsp/69118.html grüsse Zitieren
Crush Geschrieben 3. Februar 2002 Geschrieben 3. Februar 2002 Im Codeguru steht gerade eine interessante Thread-Klasse selbstgemacht: http://www.codeguru.com/system/OOThreadWrapper.html Zitieren
sandman Geschrieben 4. Februar 2002 Autor Geschrieben 4. Februar 2002 @ 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... cu Zitieren
Empfohlene Beiträge
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.