Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [c++/unix] Fork e thread

    Ecco il mio problema... ho un applicazione con una GUI fatta in GTK+. Se forko all'interno del programma (cioè non subito nel main.. ma dopo) mi si sdoppia anche la GUI e tutto il resto?
    Io vorrei semplicemente fare eseguire una sola funzione contemporaneamente al programma, la funzione deve convertire delle immagini e concludere l'esecuzione alla fine della conversione, ritornando, se possibile, qualcosa che faccia capire al programma se è andato tutto bene o no.

    Ho pensato anche ai thread, ma ho letto che usando la libreria pthread vengono creati thread user level, e poichè devo fare chiamate bloccanti, mi bloccherebbero anche il resto del programma. Come posso fare per creare thread kernel level? (e risucire a capire quando un thread ha terminato l'esecuzione leggendo, ad esempio, un valore di ritorno?)

    Se dal thread che creo non tocco la memoria del programma "principale" non ho bisogno di usare semafori, giusto?

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381

    Re: [c++/unix] Fork e thread

    Originariamente inviato da Infernal
    Ho pensato anche ai thread, ma ho letto che usando la libreria pthread vengono creati thread user level, e poichè devo fare chiamate bloccanti, mi bloccherebbero anche il resto del programma.
    Questo dove l'hai letto? Un thread dal momento in cui è creato al momento in cui viene chiuso ha vita autonoma all'interno di un programma e spesso viene proprio usato per evitare di piantare il programma principale affidandogli proprio le chiamate bloccanti.

    Se dal thread che creo non tocco la memoria del programma "principale" non ho bisogno di usare semafori, giusto?
    Hai bisogno di usarli se hai variabili globali condivise che sia il thread che il programma principale ci vanno a leggere e/o scrivere. Se non hai variabili globali condivise non hai bisogno di sincronizzare gli accessi e di fatto hai due programmi in uno.
    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

    Re: Re: [c++/unix] Fork e thread

    Originariamente inviato da shodan
    Questo dove l'hai letto? Un thread dal momento in cui è creato al momento in cui viene chiuso ha vita autonoma all'interno di un programma e spesso viene proprio usato per evitare di piantare il programma principale affidandogli proprio le chiamate bloccanti.
    perfetto... esattamente ciò che speravo...


    Originariamente inviato da shodan
    Hai bisogno di usarli se hai variabili globali condivise che sia il thread che il programma principale ci vanno a leggere e/o scrivere. Se non hai variabili globali condivise non hai bisogno di sincronizzare gli accessi e di fatto hai due programmi in uno.
    e come faccio dal programma principale a sapere quando il thread ha finito e farmi restituire qualcosa?

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Se usi pthread, dai un'occhiata alla documentazione. Se non ricordo male esiste una pthread_join() che aspetta che il thread abbia finito l'esecuzione, poi ci sono altre funzioni per il recupero del valore d'uscita.
    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
    Si... ho letto delle cose su pthread... ma non ho trovato molto.. adesso cerco bene... =) grazie mille!

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    si si usa la join con se non sbaglio il puntatore void* alla struttura dati nella quale ritornare il valore del thread concluso

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.