See: http://blogs.testbit.eu/timj/2005/08/01/01082005/ (page moved)
Today, i started working at imendio, we’re doing some pretty interesting hacking here, so i hope the job is going to be fun.
And, the hopefully last incarnation of the atomic ref-counting patch for GObject i blogged about earlier finally made it into CVS. With atomic ref-counting, GObject users still have to make sure they don’t modify or read-out the same object concurrently from different threads (such as using g_object_set_qdata() on it or using object methods), they may however invoke g_object_ref() and g_object_unref() concurrently without having to ensure mutual exclusion, the same goes for GParamSpec and GClosure.