There was recently a discussion here about this, with the following
> On 11/6/07, Nathan Froyd <froydnj@......> wrote:
> > On 11/6/07, Nikodemus Siivola <nikodemus@......> wrote:
> > > On 11/5/07, Attila Lendvai <attila.lendvai@......> wrote:
> > > > some more info: i've studied SB-C::SET-INFO-VALUE and it seems
> to me
> > > > that it's missing a lock. i've checked what the info db's
> > > > is, and it doesn't seem to be a thread-safe structure to me,
> so i
> > > > suspect this to be the cause of problem.
> > > >
> > > > fyi, contextl is calling ENSURE-CLASS as layers are enabled/
> > >
> > > This is going to take a fair amount of work to make it work, I'm
> > > when you change the class hierarchy you basically cannot have
> > >
> > > [lots of things you can't do]
> > Are you saying "If we added proper locking in SET-INFO-VALUE, these
> > things would suffer"?
> > Or "Even with proper locking in SET-INFO-VALUE,
> > these things would still be impossible"?
> > Or something else entirely?
> ...and "if Contextl does this, it's going to be hard to make it run
> threaded" --
> AFAIK no current implementation supports parallel redefinitions of
> classes. Maybe
> I'm mistaken.
> (It might be that the changes Contextl effects on the class
> hierarchy are "well
> behaved" in a number of ways that make this special case easier to
> I don't know.)
I'm trying to find out what I can do in ContextL to make this work
properly. (Sorry for chiming in late, but I missed that discussion.)
Parallel redefinitions are indeed hard, not just because of CLOS.
However, in ContextL I don't do such redefinitions - I just add new
classes as leafs to an existing hierarchy. My assumption was that this
should be fine - however, I forgot at least about the class-direct-
subclasses list of a class which might be updated because of new
subclasses in several threads at the same time.
Anything else which could go wrong because of class definitions (and
Especially: If the superclass I am subclassing is under my control,
and nobody else can (or is supposed) to subclass it, I should be safe,
no? (Provided I do the proper locking internally.) Or can other
parallel class definitions / redefinitions unrelated to my internal
subtree of the class hierarchy still interfere with ContextL?
Pascal Costanza, mailto:pc@..., http://p-cos.net
Vrije Universiteit Brussel, Programming Technology Lab
Pleinlaan 2, B-1050 Brussel, Belgium