[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
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]