竞争检测(-race)

当使用了-race作为命令行参数后,编译器会插桩代码,使得所有代码在访问内存时,会记录访问时间和方法。同时运行时库会观察对共享变量的未同步访问。当这种竞争行为被检测到,就会输出一个警告信息。

竞争检测器只有在被运行的代码触发时,才能检测到竞争条件,因此在现实的负载条件下运行是非常重要的。

代码插桩,程序会使用10倍的CPU和内存,尽量使用插桩代码来测试

使用:

  1. go test -race mypkg // 测试包
  2. go run -race mysrc.go // 编译和运行程序
  3. go build -race mycmd // 构建程序
  4. go install -race mypkg // 安装程序
  5. go get -race xxxx