On 6/4/07, Gabriele Greco <[EMAIL PROTECTED]> wrote: > I know GTK APIs are not thread safe, I've an app with a thread doing a > massive job that wants to update the gui status every few cycles, to do > so I remembered an old post speaking about g_idle_add. > > The question I have and which I didn't find answers both googling, both > looking at the sources is if g_idle_add can be called without any extra > mutex/lock from another thread.
AFAIK g_idle_add() is thread-safe. If I'm wrong you will notice soon :) Cheers > > - I have to use gdk_threads_init() mechanism? > - I have to use gdk_threads_enter/leave() around gtk_main() and around > the g_idle_add call? > - If so, if I use the gdk_threads_idle_add() facility I can avoid all > the locks or I have to lock around gtk_main anyway? (the example doesn't > clarify this) > > Ideally my code should be something like: > > static progress_datas; > > gint myfunc(vod *unused) > { > gtk_label_set_text(blablabla, progress_data); > > return FALSE; // call only once > } > > work_thread() { > while(1) { > loops++; > [... do the real work ...] > if ((loops % 1000) == 0) { > update_progress_datas(); > g_idle_add(myfunc, NULL); > } > } > } > > int main() > { > [..gui init and thread start] > gtk_main() > } > _______________________________________________ > gtk-app-devel-list mailing list > gtk-app-devel-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list