====== 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 [[programmazione:glib: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);
[[http://library.gnome.org/devel/glib/stable/glib-The-Main-Event-Loop.html#g-timeout-add|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.