_beginthreadex wirklich Multithreading?
-
Moin ich starte einen Thread mit _beginthreadex dieser Thread wird direkt ausgeführt.
Nur wenn ich nach der _beginthreadex Zeile was mit printf ausgeben will passiert nix.
Also so mein ich das:_beginthreadex printf("");Doch es wird nur das printf ausgegeben wenn der Thread beendet wurde.
Also ist das dann ja kein Multithreading.
Oder mache ich einfach nur was verkehrt?
-
_beginthreadex startet dir einen Thread, d.h. eine Funktion die parallel (pseudo) zu deinem Hauptprogramm ausgeführt wird. Hier mal ein Beispiel wie man es machen könnte:
void meine_Funktion(char *string){ printf(string); _endthreadex(0); } void mein_Threadstarter(void){ char mein_parameter[16]; DWORD ID; HANDLE hThread; strcpy(mein_parameter, "*guggst du*"); hThread = (HANDLE)_beginthreadex(NULL, 0, (void *)meine_Funktion, (void *)mein_parameter, 0, &ID); if(hThread){ CloseHandle(hThread); } }möglicherweise war dein Aufruf nicht korrekt.
-
Mein Aufruf sieht so aus:
t = _beginthreadex (NULL,0,(void *)start(),NULL,0,&id); printf("TEST\n");Die funktion wird ja auch gestartet doch mir wird das TEST nach dem die Funktion beendet wurde erst ausgegeben.
-
Evtl. wird hier gecached und die Ausgabe erfolgt erst bei einem newline. Wie gecached wird und wann Ausgaben wirklich erfolgen steht der CRT frei.
Zur Not fflush ausführen. Spätestens dann sollte die Ausgabe sichtbar werden.@*gugggstdu*:
Dieser Code ist tödlich. Deine Funktion inkl übergebenen Parameter wird evtl. schon längst wieder verlassen und damit der übergebene Zeiger ungültig. Genau so sollte man es nicht machen.
-
du rufst die start-funktion auf. mach die () da weg.
-
du rufst die start-funktion auf. mach die () da weg.
Dann wird die Funktion nicht aufgerufen....
Also dann passiert nichts.
-
dann zeig mehr code.
-
Martin Richter schrieb:
@*gugggstdu*:
Dieser Code ist tödlich. Deine Funktion inkl übergebenen Parameter wird evtl. schon längst wieder verlassen und damit der übergebene Zeiger ungültig. Genau so sollte man es nicht machen.Hast recht das war Schwachsinn