Code:
HANDLE mutx;
Aktion my_Aktion = NULL;
DWORD WINAPI my_thread(void *par)
{
//
// HIER DEINEN CODE
//
// alles berechnet, Rueckgabewert setzten
WaitForSingleObject (mutx, 1000);
my_Aktion = mein_rueckgabe_wert;
ReleaseMutex (mutx);
return 0;
}
int main ()
{
HANDLE threadHandle;
DWORD threadId = 0;
//
// HIER DEINEN CODE
//
// Mutex erzeugen
mutx = CreateMutex (NULL, false, NULL);
// Tread erzeugen
threadHandle = CreateThread (0, 0x1000, &my_thread, 0, 0, &threadId);
//
// FOO BAR (irgendwas anderes machen...)
//
// jetzt sollte alles berechnet sein, ueberpruefen...
// falls Berechnung noch nicht fertig: warten
for (;;)
{
WaitForSingleObject (mutx, 1000);
if (my_Aktion != NULL)
{
ReleaseMutex (mutx);
break;
}
ReleaseMutex (mutx);
Sleep (10);
}
//
// MEHR VON DEINEM CODE
//
return 0;
}
Ganz simpel mit einem Mutex, Fehler werden hier nicht abgefangen.
Lesezeichen