Re: Threads
- From: Olexiy Avramchenko <olexiy irtech cn ua>
- To: Russell Shaw <rjshaw iprimus com au>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Threads
- Date: Mon, 01 Dec 2003 16:55:37 +0200
Russell Shaw wrote:
ok. I also have a function that is called from a normal gtk callback, as
well as other threads. This function calls gtk things, so it has
gtk_threads_enter()/gtk_threads_leave() in it.
You should not call gdk_threads_enter in almost all callbacks. There're
few situations
(timeouts, for example), when callback runs outside the global lock and
you have to
protect your code.
When the function is called from the normal gtk callback, it gets
blocked
on gtk_threads_enter(). Why? I have disabled all other threads.
That's what 'fast' pthread mutexes do. If the 'fast' mutex is locked
you'll get blocked
on it on second lock even from the lock-owner thread. GDK -> Glib's
mutex -> pthread
(LinuxThreads) mutex == 'fast' default mutex.
I fixed it by doing: gdk_threads_leave() -> function() ->
gdk_threads_enter()
from within the gtk thread.
Yes, it's normal practice if you turned to call protected code.
Olexiy
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]