I promised in an earlier post to discuss software transactional memory. Here is a paper written by Andrew Seniuk and me for Lisa Higham's distributed algorithms course. The paper contains an overview of software transactional memory, discusses implementation approaches of a few current systems, provides proofs of several properties of Herlihy, Luchango, Moir, and Scherer's DSTM implementation, and highlights possible pitfalls that can occur in transactional code.
During the time Andrew and I were working on the paper, there was a lot of Internet excitement about the potential of STM, and I think it is important to highlight the problems that will be encountered when use of software transactional memory gets more widespread - both to help people avoid them, and to deflate some of the "silver bullet" hype that I think STM has received.
Download the PDF.