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 thread (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.