Abstract

Our accelerating computational demand and the rise of multicore hardware have made parallel programs, especially shared-memory multithreaded programs, increasingly pervasive and critical. Yet, these programs remain extremely difficult to write, test, analyze, debug, and verify. Conventional wisdom has attributed these difficulties to nondeterminism (i.e., repeated executions of the same program on the same input may show different behaviors), and researchers have recently dedicated much effort to bringing determinism into multithreading. In this article, we argue that determinism is not as useful as commonly perceived: it is neither sufficient nor necessary for reliability. We present our view on why multithreaded programs are difficult to get right, describe a promising approach we call stable multithreading to dramatically improve reliability, and summarize our last four years’ research on building and applying stable multithreading systems.

Resources

Other Versions

These publications report or revisit the same underlying work.

  1. Determinism Is Overrated: What Really Makes Multithreaded Programs Hard to Get Right and What Can Be Done about It? Proceedings of the 5th USENIX Workshop on Hot Topics in Parallelism (HotPar), June, 2013 PDF BibTeX
  2. Make Parallel Programs Reliable with Stable Multithreading Columbia University Technical Report CUCS-006-13, 2013 PDFPublisher BibTeX