2009/10/26 Schwab,Wilhelm K <[email protected]>: > Philippe, Stef, > > That's fine for Seaside, but what about other users of weak collections? I > think I have found the weakness (pun intended) in Squeak/Pharo: weaklings do > only half of what they should do. They (correctly) do not prevent garbage > collection of the objects they reference, but they apparently fail to clean > up after these objects have been finalized. > > In Dolphin, the following returns an empty array: > > | map | > map := WeakLookupTable new > at:2 put:String new; > yourself. > MemoryManager current collectGarbage. > map keys asArray. > > > Pharo is content to answer nil from #at:put: but still keep the key: > > | map | > map := WeakValueDictionary new > at:2 put:String new; > yourself. > 5 timesRepeat:[ Smalltalk garbageCollect. ]. > map keys asArray. >
and why the key should go away? I think that this is an implementation nuance, but not bug or missing feature. No-one would expect from dictionary keys to automatically mutate depending on the state of the associated values. If you want such behavior, why not implement own WeakLookupTable ? > Gary reported a lack of thread saftey in the weak collections almost two > years ago. See Mantis #6955. > > Bill > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Philippe > Marschall > Sent: Sunday, October 25, 2009 9:44 AM > To: [email protected] > Subject: Re: [Pharo-project] Thread-safe collections > > Igor Stasenko wrote: >> 2009/10/23 Schwab,Wilhelm K <[email protected]>: >>> Hello all, >>> >>> I just looked around for thread-safe collections, and found nothing that >>> looks like a shared dictionary. The squeak-dev archives contain the >>> obligatory newbie posts (wanting all collections to be thread safe) and the >>> expected replies, some of which are overly dismissive of the idea. >>> Something that protects things like #at:ifAbsentPut: and friends is >>> _really_ useful. Am I missing an existing implementation? >>> >> >> Imo, there's only one shared collection which is useful - shared >> queue. :) > > Yeah, sure. Where again do I store my Seaside sessions? Oh, it's no problem, > because we use only one worker thread and process requests on after another. > Geez, problem solved. > > Cheers > Philippe > > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > -- Best regards, Igor Stasenko AKA sig. _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
