Barra laterale

programmazione:glib:eseguire_funzioni_in_background

Eseguire funzioni in background con Glib

Autore: Fabio Di Matteo
Ultima revisione: 23/10/2008

Con glib esistono almeno due modi per eseguire funzioni in background, il modo piu' classico e' quello di usare i I thread di Glib (di glib), l'altro modo invece consiste nell'usare i timeout ovvero delle funzioni che vengono eseguite a intervalli regolari .

Come usare i timeout

Immagginiamo di avere la seguente funzione e di volerla richiamare a intervalli di 1 secondo in maniera continuativa:

...
gboolean ScriviCiao(){
    gprint("Ciao mondo\n");
return TRUE
}
...

ecco come innescare il timer che mandera' in esecuzione la funzione e contemporaneamente il resto del codice .

g_timeout_add(1000, ScriviCiao, NULL);

g_timeout_add()
N.B. Il timer esegue la funzione fintanto che questa ritorni TRUE . Non appena la funzione ritorna FALSE il timer si “spegne” e la funzione non viene eseguita piu'.

Quando scriviamo applicazioni gtk+2 e' consigliabile usare questo approccio piuttosto che un thread , almeno per quanto riguarda le funzioni che fanno uso dei widget

g_timeout_add “comunica” con il 'gtk_main()'' e per questo tiene conto di tutti i cicli per l'aggiornamento della grafica creando di fatto un sistema sicuro per interagire con i widget ad intervalli di tempo prefissati.


programmazione/glib/eseguire_funzioni_in_background.txt · Ultima modifica: 18/04/2018 - 15:48 (modifica esterna)