
John Torjo wrote:
Use mutexes. and In my experience, I hardly need just a container to be thead-safe. I usually need more data in addition to the container (which needs to be thread-safe). For instance, an extra latest_access_time, out_file, used_for_the_first_time, etc.
Thus, to me, the benefit of having a thread-safe container is very small.
One thread-safe container that might be useful is a channel - a queue that one thread writes to and another reads to, the reader blocking when the channel is empty. Inferno and Plan9 (and the port of the plan 9 thread library to Unix) use these for thread control as well as for inter-thread communication. Supposedly multithreaded programs based on the channel are easier to write correctly or prove correct. --Joel