thread-safety

Jeffrey Stedfast fejj at novell.com
Thu Dec 15 10:28:29 PST 2005


okay, thanks for the info - I think that answered all the questions I
had.

Jeff

On Thu, 2005-12-15 at 00:10 -0500, Havoc Pennington wrote:
> On Tue, 2005-12-13 at 16:33 -0500, Jeffrey Stedfast wrote:
> > I'm about to dive into gnome-vfs and make it use the new HAL
> > mount/unmount/eject fu that Kay has just added in 0.5.6...
> > 
> > What I need to know is whether doing things like sending dbus messages
> > from multiple threads on the same bus, etc is going to cause problems
> > (since gnome-vfs is mutlithreaded).
> > 
> 
> libdbus is theoretically thread safe, it supports using the same
> DBusConnection from multiple threads. You have to call
> dbus_g_thread_init() to get it going in a glib app. All DBusConnection
> methods will automatically do locking etc.
> 
> DBusMessage does not have any locks though; if you want to share a
> message between threads, you need to do your own locking. Also once you
> send the message, it will be owned by the DBusConnection thread so your
> other threads need to stay away from it. There's no typical reason why
> you'd share a message between threads or even keep a reference to a
> message though, normally you would send it and forget it.
> 
> I would say libdbus probably has a thread-related bug or three, but
> probably nothing fundamental. Judging by list traffic, some people have
> had success using it with threads, and there's a basic test app in the
> tree that works fine.
> 
> The GLib bindings are maybe more likely to have issues, but are probably
> easy to fix if so.
> 
> You do have to be sure your threads don't step on each other; i.e. you
> don't want one thread to steal another thread's messages or monopolize
> the connection lock for a really long time or something. But that's just
> a matter of thinking about this as you code.
> 
> Havoc
> 
> 
-- 
Jeffrey Stedfast
Evolution Hacker - Novell, Inc.
fejj at ximian.com  - www.novell.com



More information about the dbus mailing list