Multithreading is becoming ubiquitous to build high-performance software. Multithreaded programs, however, are both harder to write and harder to debug. The random occurrence of tricky bugs make them highly time-consuming to find. In this context, program verification is a powerful tool to build safe multithreaded programs. This book adapts separation logic - a novel and successful technique to reason about imperative programs - to multithreaded object-oriented programs a la Java. First it shows how to finely reason about the start and join primitives for multithreading. Second, this book...
Multithreading is becoming ubiquitous to build high-performance software. Multithreaded programs, however, are both harder to write and harder to debu...