[Pharo-project] Process-specific state broken and uncomplete

Philippe Marschall kustos at gmx.net
Tue Nov 9 07:06:29 CET 2010


On 08.11.2010 06:39, Igor Stasenko wrote:
> Hello,
> 
> i just found that Squeak images Process class contains unused ivars:
> island env
> 
> in Pharo image, env ivar is used for holding a process-specific state,
> which is convenient, so one could use:
> Processor activeProcess environmentAt: put:...
> 
> but in Squeak image there is even no such methods.
> 
> There are also some caveats with such thing:
> during process termination, Processor activeProcess could point to
> different process,
> and so, accessing to process environment may lead to error(s).
> 
> To avoid issues like these, the process termination action (stack
> unwinding) should be always performed only for active process.
> One of a trick i think, is to replace the suspendedContext with own
> context, and then activate given process in order to unwind its stack
> etc.
> 
> Another way is to remember environment somewhere else during process
> termination, and use different method to access it i.e. instead of:
> Processor activeProcess environmentAt:
> use
> self processEnvironmentAt:
> 
> where #processEnvironmentAt: is implemented in Object class, and can
> handle termination gracefully.
> 
> But i think replacing suspendedContext is more generic.
> What you think?

Not so convinced. Fast thread locals are important and a Symbol lookup
in an IdentityDictionary is pretty fast. And polluting Object with stuff
that doesn't belong there isn't a very convincing alternative to me.

Cheers
PHilippe





More information about the Pharo-project mailing list