> This problem exists within individual machines as well. For example, the MIPS
> instruction set allows for atomic updates of 32-bit or 64-bit values without
> requiring locks. For values smaller than that, we're screwed.
I don't understand this particular concern. A larger grain atomicity supported
by the hardware does not preclude an implementation of atomic operations for
smaller data items. You have to take a special care (use an additional lock)
for larger objects, or if the data is not aligned. Since most of the users will
care about efficiency for aligned integer, float, and double-precision data,
the remainder could be implemented using much less efficient mechanisms.
I believe that it is important for the implementors to recognize important
cases that are relevant to high-performance computing, and strive to achieve
good performance for them. Most other cases (like atomic operations on
strings of EBCDIC characters etc) could be treated as marginal with performance
being not that critical.