thread funktion mittels event
-
hi leute!
wie kann ich überprüfen ob eine thread funktion objekt event beendet wurde, außerhalb der thread funktion!!?
auch irgendwie mit WaitForSingleObject ?if(WaitForSingleObject(hThread,0)==WAIT_TIMEOUT) { // Thread läuft noch } else { // Thread läuft nimmer }so in der art???
cu
-
Du könntest auch GetExitCodeThread verwenden

-
ich hab nun folgendes problem...
ich hab 4 threads!
ich muss im 4ten thread warten das alle anderen 3 threads fertig sind...dann kann ich erst mit den 3 werten weiter rechnen...3 mal WaitForSingleObject?
hab mal wo gesehn man kann das irgendwie in ein array tun...cu
-
WaitForMultipleObjects

-
hi!
ich habs nun mal mit aitForSingleObject probiert!
aber immer bekomm ich das als ergebniss 0 ??? wartet die funktion nicht bis der thread fertig ist??#include <process.h> #include <windows.h> #include <math.h> #include <iostream> using namespace std; template<class T> void WaitForReturn(T& stream) { stream.clear(); stream.ignore(stream.rdbuf()->in_avail()); stream.get(); } void ThreadResult1(void *pX1); HANDLE h_Event1; float Y1 = 0.0; int main() { float X1 = 0.0; cin >> X1; h_Event1 = CreateEvent(NULL, FALSE, FALSE, NULL); _beginthread(ThreadResult1, 0, (void*) &X1); SetEvent(h_Event1); WaitForSingleObject(h_Event1, INFINITE); //solange der Thread läuft cout << "Ergebniss: " << Y1; CloseHandle(h_Event1); WaitForReturn(cin); return 0; } void ThreadResult1(void *pX1) { float X1 = 0.0; //X1 = static_cast<float>(*pX1); X1 = (float) *(float*)pX1; Y1 = (X1 * X1 + 2*X1 -3) / log (X1); //WaitForSingleObject(h_Event1, INFINITE); _endthread(); }cu
-
Hmmm, hast du gelesen was CMatt schrieb?
Kennst du die (un)logische reihenfolge wie Threads bearbeitet werden?
Brüh mal nen Kaffee auf und zünde ne Zigarette an und leg dich auf die Couch, mit dem Kopf zur decke, und du wirst sehen die Antwort kommt schnell.Um knapp halb fünf gebe ich nur noch arge Hinweise

-
Was soll ich den sagen, ich komme mit meinem code schon um sage und schreibe
viertel nach sechs morgens noch nicht klar. muss um 10 aufstehen und auf eine
schulung...............als trainer! Also ich bin so richtig gef****Grüße
Ken_The_Coder
-
Versuch doch mal dem Compiler zu sagen, das Dein Float Y1 auch durch äußere Einflüsse (== Threads) verändert werden darf (mittels volatile).
Sollte das Problem beheben...
-
wenn ich nach:
WaitForSingleObject(h_Event1, INFINITE); //solange der Thread läuftein
Sleep(100);einbaue dann geht es;-)
dachte WaitForSingleObject wartet wirklich bis der thread fertig abgearbeitet ist...
cu
-
Tut es auch. Kennst Du die Bedeutung des Schlüsselwortes volatile?
-
hi!
nö kenn ich bisher noch nicht...cu
-
Dachte ich mir, da Du auf meinen ersten Beitrag überhaupt nicht reagiert hast.
volatile float Y1 = 0.0;