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/