Proving the Correctness of Nonblocking Data Structures

  • Authors:
  • Mathieu Desnoyers

  • Affiliations:
  • EfficiOS

  • Venue:
  • Queue - Concurrency
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

So you've decided to use a nonblocking data structure, and now you need to be certain of its correctness. How can this be achieved? When a multithreaded program is too slow because of a frequently acquired mutex, the programmer's typical reaction is to question whether this mutual exclusion is indeed required. This doubt becomes even more pronounced if the mutex protects accesses to only a single variable performed using a single instruction at every site. Removing synchronization improves performance, but can it be done without impairing program correctness?