"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()


Anmelden zum Antworten