"Threadsave Pointer"?
-
Hi,
ich starte in einer Schleife mehrere Threads hintereinander mit CreateThread. Der der Threadfunktion übergebene void* soll eigentlich nur einen const char* enthalten. Jetzt muss ich aber garantieren dass der Pointer bis zu einer bestimmten Stelle in der neuen Funktion erhalten bleibt (bzw. Das, worauf er zeigt). Mein jetziger Ansatz ist:
struct SavePointer { HANDLE m_pseudomutex; const char* msg; } void StartFunction() { .. SavePointer sp; sp.m_pseudomutex = CreateEvent(..); for (..) { CreateThread(..&sp..); WaitForSingleObject(sp.m_pseudomutex); } CloseHandle(..); .. } int ThreadFunction(void* param) { .. SavePointer* sp = param; //blah cast ;) SetEvent(sp->m_pseudomutex); .. }
Gibt es da einen besseren Ansatz? Weil das Ganze scheint mir irgendwie etwas viel Gefrickel zu sein, aber etwas Besseres will mir auch nicht einfallen..
-
malloc() + free()