====== 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.