CreateThread Frage bzgl. OOP



  • Hallo,
    ich habe eine Frage bzgl. der CreateThread Funktion aus Der WinApi

    Meine Frage:

    //Hier wird ein eigenständiger Thread der die Logfiles verwaltet und aktualisiert gestartet
    CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)serverObj->Log(),NULL,NULL,&threadId);

    Ich will einen Server OOP programmieren, deswegen soll die Log Funktion in der Klasse Server definiert werden. Nun wollte ich fragen, ob man dass so machen darf (ist das Standart Konform).
    Es geht um folgenden Parameter:
    (LPTHREAD_START_ROUTINE)serverObj->Log()

    Vielen Dank
    rip



  • Die OOP sagt nichts dazu aus, ob Funktionen eines Objekts in einem eigenen Thread laufen oder nicht - das ist also ok.

    Speziell hat C++ aber was dagegen, Zeiger auf Memberfunktionen an Funktionen der API zu übergeben - das ist nicht erlaubt. Zeiger auf Memberfunktionen sind immer noch auf die zugehörige Klasse "getypt", und damit nicht kompatibel zu dem ungetypten Funktionszeiger der API.

    Das lässt sich aber lösen - lustigerweise gibt's dafür einen Beitrag für Linux-Threads, der genau Dein Problem adressiert:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-243180.html

    Die dort gezeigte Lösung wird auch bei Dir funktionieren.



  • Leider hab ich das nicht über die Sufu gefunden.Vielen Dank


Log in to reply