Abstract

To improve program performance on today's clusters, clouds and multicore computers requires the developer to pay serious attention to scalability. When a thread updates some shared datum, and another thread wants to read or write the most recent version of that datum (they \emph{conflict}), they must synchronise, which constitutes a sequential bottleneck. This is a general result that does not depend on any particular implementation, even with efficient hardware support for cache coherence, as explained in the paper. Here comes the paper's main insight. If two concurrent procedure calls \emph{commute} with each other (i.e., executing them in either order is equivalent), this means that neither one depends on the result of the other. Therefore, \emph{there is no inherent reason why these calls should conflict}; and, hence, \emph{it is possible to implement them in a way that scales well}.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call