Guille,
It took me a while to get comfortable with this position, but having done things this way for a long time, I now think it is correct: the explicitly thread-safe collection (SharedQueue, weak collections, thread-safe dictionary-like classes) are a natural part of the thread synchronization tools that happen to be useful as collections. They are thread-safe because they need to be.
In general, I doubt you will help yourself very much by creating other thread-safe collections, as there will still be operations that should be atomic, and in the name of performance and avoiding a false sense of security, "do it the hard way." Actually, it is not all that hard (most of the time<g>). Over-protect with critical sections and then test: deadlocks will reveal themselves particularly well in call-stacks for all non-dead threads; dirty reads and writes are more trouble to find, so when in doubt, protect; it is easy to let it deadlock and then back off as appropriate. IMHO, trying to create a universal solution to synchronization is a prescription for headaches.
Bill
Wilhelm K. Schwab, Ph.D. University of Florida Department of Anesthesiology PO Box 100254 Gainesville, FL 32610-0254
Email: bschwab@anest.ufl.edu Tel: (352) 846-1285 FAX: (352) 392-7029
squeak-dev@lists.squeakfoundation.org