Dunque ho seguito il tuo suggerimento e ho modificato il file header.h inserendo il comando "errore = fcntl(sock,F_SETFL,O_NONBLOCK);" e il comando "pthread_join(IDthread1, NULL);" alla fine della funzione, ma nulla di nuovo.
Poi ho tolto il comando ""pthread_join(IDthread1, NULL);" e l'ho inserito all'interno del main subito dopo l'invocazione del thread. In questo caso il programma alloca 8MB (da 20,5MB allocati a 28,5MB) all'avvio della funzione e rimangono quelli per tutte le altre volte che riuso la funzione. In questo modo però perdo i vantaggi dei thread in quanto la in main per proseguire l'esecuzione deve attendere il termine della funzione.
Se invece invoco la funzione direttamente con il comando "nomefunzione();" il programma alloca solo 20,5MB senza allocare quei 8MB in più. Però non ho i vantaggi dei thread (comunque non li avrei avuti anche con il metodo precedente).
Dunque sono arrivato alla conclusione che quei famosi 8MB sono allocati dal comando di creazione del thread e non dalla funzione stessa che viene chiamata. Dimmi se sbaglio.
Qualche consiglio per ottenere il fatidico multitasking con questa funzione senza perdere un botto ti ram?
Non è proprio possibile deallocare la memoria di un thread?
Sono nelle tue mani

Rispondi quotando