Race detectors are seriously cool tools that make writing race-free concurrent code easy — they detect the ever so elusive race conditions in a program. The Go race detector is one such tool that ships with Go, thereby making the magic of race detection trivially accessible to you and me.
This talk will present the subtleties of race detection and explore how the Go race detector does it. We will delve into the race detector's use of vector clocks (from distributed systems!) to detect data races, including the implementation. Finally, we will touch upon the clever optimizations that make the tool practical for use in the real world.