竞争检测(-race)
当使用了-race作为命令行参数后,编译器会插桩代码,使得所有代码在访问内存时,会记录访问时间和方法。同时运行时库会观察对共享变量的未同步访问。当这种竞争行为被检测到,就会输出一个警告信息。
竞争检测器只有在被运行的代码触发时,才能检测到竞争条件,因此在现实的负载条件下运行是非常重要的。
代码插桩,程序会使用10倍的CPU和内存,尽量使用插桩代码来测试
使用:
go test -race mypkg // 测试包
go run -race mysrc.go // 编译和运行程序
go build -race mycmd // 构建程序
go install -race mypkg // 安装程序
go get -race xxxx