Threading in C++
-
mit der funktion 'CreateThread' wird ein thread gestartet, der 20 mal durch eine schleife läuft und sich dann selbst beendet.
--> http://msdn2.microsoft.com/en-us/library/ms682453.aspx

-
Thread starten:
HANDLE hThread = CreateThread( NULL, 2000, (LPTHREAD_START_ROUTINE)runInThread, p1, p2, &threadId );Der Thread beararbeitung findet in:
void runInThread() { for(int i=0;i<20;++i) { printf("Ich komme aus runInThread!"); } }statt:
-
Für was steht denn das p1 und p2? Könnt ihr mir auch sagen, wie ich das vereinbaren muss?
Ich bekomme nämlich diese Fehlermeldung: 'p1' undeclared... das selbe gilt für p2.
Ich habe mir so überlegt das die doch bestimmt pointer sind aber wenn ich einfach mal ausprobiere die als int oder long oder DWORD zu deklariern sagt der mir das wieder irgendwas nich gehen will im Bezug auf die Funktion CreateThread. Wieder danke im Voraus
-
Lies dir doch einfach mal den geposteten Link durch, dann weißt du auch was er an der Stelle für Parameter haben will...
Gruß
zeigerzeiger
-
Woher hast du denn den Code? Normalerweise sollten dort auch die verwendeten Variablen dabeistehen.
Technisch:
- p1 ist ein void* und wird als Parameter an den Thread übergeben (die Threadfunktion ist korrekterweise auch als "int runInTread(void*);" definiert und nicht als "void runInThread();") - wenn du den Parameter nicht brauchst, übergib' NULL.
- p2 ist ein DWORD-Wert und stellt die Flags für den Thread-Start ein - entweder 0 (der Thread startet sofort) oder CREATE_SUSPENDED (der Thread muß später mit ResumeThread() gestartet werden).
-
Kannste mir auch sagen, was das LPTHREAD_START_ROUTINE bedeutet?
-
Reaper1 schrieb:
Kannste mir auch sagen, was das LPTHREAD_START_ROUTINE bedeutet?
Das ist ein Funktionszeiger (auf eine "DWORD xyz(LPVOID);"-Funktion). In deinem Fall mußt du den übergebenen Funktionszeiger explizit casten, weil er nicht die korrekte Signatur hat - ist aber alles andere als sauber.
-
Reaper1 schrieb:
Kannste mir auch sagen, was das LPTHREAD_START_ROUTINE bedeutet?
DWORD __stdcall funktionsname (void *p)
-
Was heißt denn das "HANDLE hThread"... das ist doch bestimmt eine Vereinbarung oder? Von welchen Typ ist das und wozu dient es? Wenn ich es weg lasse geht das Programm zwar noch, möchte es aber trotzdem mal rein informativ wissen.
-
Ein HANDLE ist eine Art ID, mit der du später den gestarteten Thread wiederfinden kannst (zmu Beispiel um ihn vorübergehend anzuhalten oder um zu warten, bis er beendet wurde). Was genau es darstellt, muß dich nicht interessieren - Funktionen wie SuspendThread() oder WaitForSingleObject() wissen, was sie mit dem Handle machen können.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.