Evgeny Repekto wrote:
> Some days ago I asked about Xlib async error. It seems I solve the
> problem but in one point I'm still getting dead lock. Is it critical
> to put
>       g_thread_init(NULL);
>       gdk_threads_init();
> before
>         Gtk::Main Kit(argc, argv); ?
> 
> What I have now is:
>         Gtk::Main mKit(argc, argv); //<--- this is first
>       g_thread_init(NULL);
>       gdk_threads_init();
>       gdk_threads_enter();
>       Gtk::Main::run(mMainWindow);
>       gdk_threads_leave();

The gtkmm documentation says to do the following before using any 
thread-related 
facilities:

        if(!Glib::thread_supported())
                Glib::thread_init();

This has worked fine for me. It happens to be in my main window's constructor 
in 
my current project, but it's probably not a bad idea to put it at the start of 
main() if your application is always going to make use of threads.

Make sure you use the Glib::Mutex/Glib::RecMutex and their nested Lock classes 
to best avoid problems such as dead-lock. Using scope/RAII to control locking 
is 
much safer than using general lock/unlock functions from any threads framework.

Edd
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to