Pracuję nad projektem, w którym mam główny wątek i jeden wątek demona, aby wykonać wyjście pliku. W moim głównym wątku mam pole pthread_t * _daemon
, które chciałbym usunąć, ale oczywiście dopiero po _daemon
zwraca NULL (rozumiem, że używanie pthread_exit()
powoduje wycieki pamięci).Usuwanie wątku demona tylko po jego zwróceniu
Jak mogę to zrobić bez zajętości-czekaj? Jeśli próbuję użyć zmiennej warunkowej, mam problem - Kiedy zadzwonię pod numer signal()
w formularzu _daemon
, aby obudzić mój główny wątek, usuwa on _daemon
, zanim zwróci NULL.
Po prostu użyłem blokady mutex, która jest zablokowana, gdy program jest uruchamiany i odblokowywany, zanim powróci _daemon
. Czy istnieje lepszy sposób, który nie spowodowałby zbyt długiego oczekiwania?
'pthread_join'? – Mat
Nie jest jasne, o co pytasz. Co dokładnie chcesz usunąć? –
Pole pthread_t, ale tylko po przechowywanym wątku demona, zwraca – yotamoo