Thread erzeugen.
-
Ich habe den gezeigten Code in ein neues Projekt kopiert, läuft einwandfrei.
EDIT: Auch mit 18 * 5 Threads.
Zeig bitte ein vollständiges, kompilierbares Minimalbeispiel, das den Fehler reproduziert.
-
Ich habe das bei mir auch in ein neues Projekt kopeirt
WIN32 anwednugn und visul stuio 6 kann es damit vilelleicht zusammen hängen
-
#include <iostream> #include <windows.h> using namespace std; void* liga = NULL; struct threadLiga { void* pLiga; int iSpieltag; int iSpielnummer; }; DWORD WINAPI test_thread(LPVOID pr) ; DWORD WINAPI Spiele_Match(LPVOID pr) ; int main() { HANDLE hThread[2]; for (int i = 0; i < 2; i++) { threadLiga *sp = new threadLiga; sp->pLiga = liga; sp->iSpieltag = i + 1; hThread[i] = CreateThread(NULL,0,test_thread,(void*)sp,0,NULL); } WaitForMultipleObjects(2,hThread, true,INFINITE); } DWORD WINAPI test_thread(LPVOID pr) { threadLiga *x = new threadLiga; x->iSpielnummer = ((threadLiga*)pr)->iSpielnummer; x->iSpieltag = ((threadLiga*)pr)->iSpieltag; x->pLiga = ((threadLiga*)pr)->pLiga; cout<<"Spieltag : "<<x->iSpieltag<<" "; HANDLE hThread[5]; for (int i = 0; i < 5; i++) { threadLiga *temp = new threadLiga; temp->iSpielnummer = i; temp->iSpieltag = x->iSpieltag; temp->pLiga = x->pLiga; hThread[i] = CreateThread(NULL,0,Spiele_Match,(void*)temp,0,NULL); } WaitForMultipleObjects(5,hThread, true,INFINITE); return 1; } DWORD WINAPI Spiele_Match(LPVOID pr) { threadLiga *x = new threadLiga; x->iSpielnummer = ((threadLiga*)pr)->iSpielnummer; x->iSpieltag = ((threadLiga*)pr)->iSpieltag; x->pLiga = ((threadLiga*)pr)->pLiga; cout<<"\n"<<x->iSpielnummer<<"\n"; return 1; }Das ist mein Beispiel
== deins
-
Welches Service Pack von VC6?
-
1. Speicherlecks werden normalerweise beim Beenden des programmes ausgegeben. Siehe auch Doku zu DEBUG_NEW
2. Mal grundsätzlich: Wo sind eigentlich Deine CloseHandle?
3. Ist Deine Verwednung von CreateThread nicht korrekt, da Du die CRT benutzt. Du musst _beginthreadex verwenden (siehe früheres Posting)
4. Erzeugst Du munter Speicher, aber hast Du auch Regeln wer wann welchen Speicher entsorgen darf?
5. Warum allokierst Du selbst für eine Ausgabe einen neuen Speicherblock, wenn Du direkt mit dem Zeiger auf die daten auch zugreifen kannst?
-
MFK schrieb:
Welches Service Pack von VC6?
Ich habe das ghleich Projekt mal auf einem anderen rechner ausgeführt und da geht es . Ich kann das nicht nachvollziehen
-
Okay< ich ahbe einfach nioch mal das Studio neu gestartet und dann hat es funktioniert.
Ich echt merkwürdig.
-
Steig doch einfach mal auf eine nicht total veraltete Entwicklungsumgebung um.
-
Da hast du recht-
Kannst du was empfehlen. ALso ich ahbe auch noch Borland c++ Builder 6.
-
Also ich könnte dir Code::Blocks empfehlen.
PS: Schau mal ein paar Posts hoch