Go问答 有人对runtime.RaceXXX有相关了解么

lrita · 2018年08月22日 · 最后由 Xargin 回复于 2018年08月23日 · 507 次阅读

Hi,

我把sync.Pool的相关代码 copy 出来,全部逻辑保留,没有修改,然后运行相关单元测试,汇报有DATA RACE,但是一样的单元测试对sync.Pool则没有DATA RACE,那么问题来了,

runtme.RaceXXX在非标准包内不起作用么?在runtime.RaceDisable()runtime.RaceEnable()的区间内仍然报告有DATA RACE

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

这是做竞态分析使用的,看代码的时候可以选择性忽略

试了一下确实是这样。。

package main

import "runtime"

var a int

func calc() {
    for i := 0; i < 10; i++ {
        go func() {
            for {
                runtime.RaceDisable()
                a++
                runtime.RaceEnable()
            }
        }()

    }
}


func main() {
    calc()
}

go run -race a.go

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册