Re: Synchronization Question
On Mon, 14 Sep 2009 12:36:23 -0700, Peter Duniho wrote:
On the other hand, if we've misunderstood and the OP really does care
about later writes having precedence over earlier ones (i.e. perhaps he
has some control over the order of execution of the threads themselves
that he hasn't mentioned, and he wants that ordering to be preserved in
the output of the array), then sure...AtomicIntegerArray might be just
the thing.
I don't care about which thread value is actually visible at the end. As
long at the value is one of the values written by one of the threads,
that will be good enough. I think the AtomicIntegerArray would have even
worse performance characteristics than using a synchronized block around
the various updates, so for me this would be out of the question.
My problem has been solved, but this thread is quite interesting.
I think this is the first time I've written a multi-threaded program that
required no explicit synchronization in the entire thing. All the
synchronization has been implicit using thread joins to handle memory
visibility.
I haven't avoided having to think carefully about the issues, but
performance was a high priority for this code and avoiding the
synchronization costs has really helped.
--
Kenneth P. Turvey <evoturvey@gmail.com>