Re: Objects creation from within multiple threads

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2007-08-28 at 14:10 +0200, David Nečas (Yeti) wrote:
> On Mon, Aug 27, 2007 at 05:21:26PM +0200, Vivien Malerba wrote:> > I've got sereval threads from which I'm trying to create objects> > (using g_object_new()) at the "same time", and I get strange errors> > (most of the time it works correctly though).> > > > A quick gdb session seems to show that when a problem occurs, all the> > threads creating objects are in g_type_class_ref() in gtype.c which is> > called from g_object_new().> > > > For example error messages are:> > ...invalidly modified type `XXX'> > g_object_new_valist: object class `XXX' has no property named `YYY'> > > > I cant' find any information about if GLib does not support creating> > objects from different threads ate the same time. Can anyone help me?> > Since no one else replied... at least this: It should work.> If it does not work and you think there's no error on your> side, report it to bugzilla -- with some minimal example to> reproduce it.  I don't understand these parts of code> enough to tell whether the locking is correct (namely the> temporary unlocking to reference the parent).
In general, creating objects of the same type at the same time frommultiple threads should work fine with any recent GLib, once all thetype stuff has been set up properly.
However, there still seem to be bits of the GType code which aren'tentirely thread-safe (class registration in particular), so you mightrun into trouble if you try to create the first object of a certain typeat the same time from two different threads.  You should be able to workaround this by doing g_type_class_ref() for the affected types from asingle thread context, such as at the beginning of your application.
Bugs you might find interesting in this context:
http://bugzilla.gnome.org/show_bug.cgi?id=64764 (Class initializationisn't thread safe)http://bugzilla.gnome.org/show_bug.cgi?id=65041 (_get_type() functionsaren't thread-safe)
Cheers -Tim

_______________________________________________gtk-list mailing listgtk-list@xxxxxxxxxxxxx://mail.gnome.org/mailman/listinfo/gtk-list

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux