Any thread-safe collection for Pharo?
There is SharedQueue that I know of. LRUCache and TTLCache can #beThreadSafe. In general it is easy enough to put something in front of your collection access. If you want concurrent and interleaved access to the same collection by multiple threads while modifying the collection, that is something else ;-)
On 22 Dec 2015, at 09:41, Denis Kudriashov <dionisiydk@gmail.com> wrote:
Hello.
Anybody know thread-safe collections project?
2015-12-22 10:28 GMT+01:00 Sven Van Caekenberghe <sven@stfx.eu>:
There is SharedQueue that I know of.
LRUCache and TTLCache can #beThreadSafe.
In general it is easy enough to put something in front of your collection access.
I want something more simple which not force me to remember what is semaphore, monitor, mutex or whatever. Something like this: threadSafeCollection := AnyCollectionClass threadSafe. or threadSafeCollection := AnyCollectionInstance threadSafe. or more general threadSafeObject := AnyObjectInstance threadSafe Thread safe wrappers should allow concurrent reads which blocked on writes and writes which blocked on anything. For example collection #add: method should wait until current #do: or #add: completes. And #do: should wait until current #add: completes.
there is AtomicQueue
I want something more simple which not force me to remember what is semaphore, monitor, mutex or whatever. Something like this:
threadSafeCollection := AnyCollectionClass threadSafe.
or
threadSafeCollection := AnyCollectionInstance threadSafe.
or more general
threadSafeObject := AnyObjectInstance threadSafe
Thread safe wrappers should allow concurrent reads which blocked on writes and writes which blocked on anything. For example collection #add: method should wait until current #do: or #add: completes. And #do: should wait until current #add: completes.
I do not think that we have such behavior.
IIRC AtomicQueue is not part of collection(s) family. On 24 December 2015 at 07:41, stepharo <stepharo@free.fr> wrote:
there is AtomicQueue
I want something more simple which not force me to remember what is semaphore, monitor, mutex or whatever. Something like this:
threadSafeCollection := AnyCollectionClass threadSafe.
or
threadSafeCollection := AnyCollectionInstance threadSafe.
or more general
threadSafeObject := AnyObjectInstance threadSafe
Thread safe wrappers should allow concurrent reads which blocked on writes and writes which blocked on anything. For example collection #add: method should wait until current #do: or #add: completes. And #do: should wait until current #add: completes.
I do not think that we have such behavior.
-- Best regards, Igor Stasenko.
participants (4)
-
Denis Kudriashov -
Igor Stasenko -
stepharo -
Sven Van Caekenberghe