008
16.03.2004, 17:08 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft... (Operator)
|
naja du hast vermutlich 3 threads der erste müsste der hauptthread sein von dem du die beiden anderen später (z.b. mittels flags) steuern kannst... irgendwie musst du ja was vorhalten das du aus dem dilemma wenn der eine thread tot ist startet ihn sofort der andere ja rauskommen an sonsten ist das ja fast virusartig wenn du es mit prozessen machen würdest....
mal ungetestet und einfach so ins forum gehackt... im header deiner klasse musst die ja irgendwie sowas deklarieren
C++: |
static DWORD ThreadProc1(LPVOID); static DWORD ThreadProc2(LPVOID); HANDLE h_Thread1; HANDLE h_Thread2;
|
dann brauchst da ja noch deine beiden treadproceduren
C++: |
DWORD MyClass::ThreadProc1(LPVOID lparam){ ...//tralala1 hier packst du ja irgenwie deine endlosschleife rum MyClass*p = ((MyClass*)lparam); DWORD dw; while(!p->abbruchflag){... oder wie auch immer die bedingung ist if(STILL_ACTIVE!=GetExitCodeThread(h_Thread1,&dw)) p->h_Thread2=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)p->ThreadProc2, (LPVOID)p->this, 0, NULL);
Sleep(100); }
}
DWORD MyClass::ThreadProc2(LPVOID lparam){ ...//tralala2analog zu prozedur1 }
|
hab sowas auch noch nicht gemacht aber es müsste beim starten ja reichen wenn du einen thread anstösst weil der ja automatisch dann den zweiten startet...
C++: |
also irgendwie im konstruktor oder wo auch immer dein thread starten soll h_Thread1=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc1, (LPVOID)this, 0, NULL);
|
-- ...fleißig wie zwei Weißbrote |