Threadklasse programmieren mit Posix Threads



  • Guten Abend,

    Ich habe mich mal an einer eigenen Threadklasse probiert. Klappt soweit auch mal alles.
    Allerdings bin ich mir nicht im klaren darüber, welchen Zweck die Funktion pthread_detach hat, und wann ich sie brauche, bzw ob ich sie überhaupt brauche. Ich habe schon unzählige Dokus durchwühlt, aber ich verstehe es einfach nicht.

    Meine Klasse sieht im Moment so aus:

    class Thread
    {
        pthread_t tid;
        void(*func)();
    
        static void* thread_func(void* t)
        {
            Thread* thr = static_cast<Thread*>(t);
            thr->func();
            return 0;
        }
    
    public:
    
        Thread(void(*function)()) : func(function)
        {
            pthread_create(&tid, 0, &Thread::thread_func, this);
            pthread_detach(tid);
        }
    
        ~Thread() { pthread_kill(tid, 0); }
    
        void join()
        {
            pthread_join(tid, 0);
        }
    };
    

    Grüße,
    PI



  • Wenn du pthread_detach nicht aufrufst, werden die Ressourcen für den Thread auch nach dessen Beendigung nicht freigegeben.
    Wenn du häufig Threads startest, müllst du also ziemlich schnell den Speicher zu.


Anmelden zum Antworten