Re: gnome-vfs usage of GConf vs threads - doh
- From: Alexander Larsson <alexl redhat com>
- To: Michael Meeks <michael ximian com>
- Cc: Havoc Pennington <hp redhat com>, <gnome-vfs-list gnome org>, <desktop-devel-list gnome org>
- Subject: Re: gnome-vfs usage of GConf vs threads - doh
- Date: Wed, 11 Dec 2002 04:44:52 -0500 (EST)
On 10 Dec 2002, Michael Meeks wrote:
> > With CORBA reentrancy there are no way to set up rules such that if you
> > follow them you avoid deadlocking when holding a lock over a CORBA call.
>
> But then again; thread per call sounds horribly expensive resource
> wise; hmm. Quite possibly a magic queueing API would be better.
Yes. I'm not actually proposing using thread per call always. That would
be way to expensive and complicated. :) It has its uses though, so it
should be allowed.
> > How would you make it safe if we are working in a single-threaded
> > environment where corba calls reenter (and you have no control of other
> > corba calls, like when you're writing a library/component)?
> >
> > The threaded case is surely complicated, but the re-entering one has no
> > solution.
>
> Not at all - there is a trivial solution; copy the list and/or
> filter/update before you start doing your calls - clearly then (if
> you're unreffing) you own a list of references; if you're not reffing -
> you can at least hold a local CORBA_Object ref which involves no
> roundtrip, and you're safe.
Hmmm. I'm not sure here. I thought it was like this, but I may be
misguided:
If item is a BonoboObject you can't safely ref it, because
bonobo_object_ref() is a reentrancy point as well. If bonobo_object_ref()
could be made a pure local call that would increase the "local refcount"
of the object reference it would work, but this is not possible due to the
fact that CORBA doesn't track object reference passing.
Are you saying you can ref a CORBA object with a guarantee of no
roundtrip?
> > Something like that would be good. Of course, this can cause trouble if
> > another thread uses that poa. I can hardly e.g. stop all processing for
> > bonobo_poa_manager() from a gnome-vfs thread. So I have to have my own POA
> > instance to do that.
>
> Sure - we'll have to expand the POA stuff in libbonobo anyway - and
> make it threadsafe (which should be fairly easy) since thread policies
> are per poa.
Yes. A lot of APIs (such as bonobo-activation and GConf) need to be
extended so that you can pass in a POA to use.
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Alexander Larsson Red Hat, Inc
alexl redhat com alla lysator liu se
He's an otherworldly zombie barbarian on a mission from God. She's an artistic
antique-collecting femme fatale from a different time and place. They fight
crime!
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]