On Fri, Oct 23, 2009 at 11:23 AM, Igor Stasenko <siguctua@gmail.com> wrote:
2009/10/23 Schwab,Wilhelm K <bschwab@anest.ufl.edu>:
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. :) If you need more kinds of thread-safe collections, it probably indicating that the concurrent code (or model) which you designed is in pretty bad shape.
Just compare two following snippets:
1 to: 100 do: [:i | collection threadSafeAt: i put: something].
and:
semaphore critical: [ 1 to: 100 do: [:i | collection at: i put: something] ].
What you think, which one is better?
A thread-safe collection package could have non-blocking implementations of most methods. Writing an object reference into an array should be an atomic operation and I assume most collections use Arrays for their implementation. Gulik. -- http://gulik.pbwiki.com/