[squeak-dev] Re: Silly question: How do I make a cache registry

Levente Uzonyi leves at elte.hu
Tue Mar 15 17:11:29 UTC 2011

On Tue, 15 Mar 2011, Marcel Taeumel wrote:

> Hi.
> Use this:
>   WeakArray addWeakDependent: myDict.
> There is a process called "WeakArray finalization process" which calls
> #finalizeValues on its dependents frequently. For WeakValueDictionary that
> would be a removal of the key that got "nil".

This is a pretty bad idea, because sooner or later the dictionary will be 
invalid, because of concurrent access to it (your process and the 
finalization process).

Also WeakValueDictionary doesn't implement #finalizeValues.

The right solution is a WeakValueDictionary which is protected from 
concurrent access + registering each stored object in a WeakRegistry.

I made a wrapper object based on Igor's Stratified proxies 
(http://code.google.com/p/pharo/issues/detail?id=3648 ) which encapsulates 
another object and ensures that only one process can access the wrapped 
object at a time. This could help with the first part.


> Bye,
> Marcel
> --
> View this message in context: http://forum.world.st/Silly-question-How-do-I-make-a-cache-registry-tp3357027p3357049.html
> Sent from the Squeak - Dev mailing list archive at Nabble.com.

More information about the Squeak-dev mailing list