You are not alone
Victor Luchangco, Virendra J. Marathe · 2010
Multicore systems make shared-memory multiprocessors ubiquitous, but require concurrent programs to exploit their potential. Yet, "our repertoire of tools and methods for cost-effectively developing reliable and robust parallel applications is spotty" [1]. One fundamental problem, of course, is maintenance of shared mutable state, which is the means of communication among threads in a shared-memory program. To ensure the integrity of this communication, threads must synchronize their accesses to this shared state, and various mechanisms have been devised to do this.