Concurrent software is a whole lot harder to get right than single-threaded software, even with high-powered concurrency primitives, isn’t it? But we’re forced into it whether we like it or not because our electrical-engineering brethren on the hardware side of the industry have decided, seemingly in unison, to stop increasing our clock speeds and start increasing our core counts instead. What gives? Why would they do that to us? What did we ever do to them? Come find out what gives. Does concurrent software challenge you? You may gain new appreciation and wonder for the challenges faced by processor designers and the amazing degree to which they have met, surmounted, or circumvented those challenges.