Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di AtoXx
    Registrato dal
    Nov 2007
    Messaggi
    119

    [C] pthread_exit() linux rilascia le risorse?

    Salve a tutti, ho un dubbio sulla pthread_exit() in linguaggio C usata si ubuntu.

    Nel mio codice dal main creo tanti thread (con la pthread_create()) in modo tale che eseguano una stessa funzione.
    Volevo capire se usando la pthread_exit() nei thread figli, generati nel main, tutte le risorse presenti della funzione che eseguono vengono rilasciate o meno.
    Ho letto un pò in giro ma trovo risposte discordanti


    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Come in ogni funzione, le variabili sullo stack sono liberate in automatico, quelle esplicitamente allocate nell'heap no. Se un processo termina, le risorse sono reclamate dal sistema operativo, se termina un thread, il processo resta attivo e il sistema operativo non ha modo di reclamare le risorse, i lock non sono rilasciati etc.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it L'avatar di AtoXx
    Registrato dal
    Nov 2007
    Messaggi
    119
    quindi se non faccio malloc nella funzione eseguita dai thread non ho il problema che mi restano in memoria oggetti non più utilizzabili(il cosiddetto memory leakages)?

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Più che non fare una malloc, dovresti fare una free di ciò che allochi, prima che il thread termini. Ora non ho capito se sei tu a forzare l'uscita dal thread, ma sappi che è l'ultima cosa da fare. I sacri testi dicono tutti che il thread deve uscire in maniera pulita appunto per evitare i problemi che riscontri. E tieni presente che la memoria può essere l'ultimo dei problemi. Se forzi l'uscita di un thread un attimo dopo che ha acquisito un mutex, hai un deadlock colossale. E non puoi sapere ne quando ne se il thread ha acquisito tale mutex.
    Questo in linea generale. Se poi la tua funzione si limita a un paio di cicli for non è possibile saperlo dato che non hai postato del codice.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Utente di HTML.it L'avatar di AtoXx
    Registrato dal
    Nov 2007
    Messaggi
    119
    Intanto ti ringrazio per le risposte esaurienti.
    Non ho postato il codice perchè ancora lo devo fare, intanto volevo capire questo fatto sui thread.
    I thread eseguiranno read e write praticamente su socket e nient'altro. Non ho ne mutex nè semafori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.