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

Reply via email to