Hi lan, The sync.Pool has memory accesses in per-p private storage. Why it not reports `DATA RACE`, but it reports when I copy those code outside stdlib? I'm confused about this, or there is something wrong in https://gist.github.com/lrita/efa8c4ae555b4b7cceee29b4ed819652 Thanks.
在 2018年8月24日星期五 UTC+8上午4:36:06,Ian Lance Taylor写道: > > On Thu, Aug 23, 2018 at 12:43 AM, <buaa...@gmail.com <javascript:>> > wrote: > > 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 > > Thanks for the example. As the docs for runtime.RaceDisable say, it > only applies to synchronization events, like mutex locks. It doesn't > apply to memory accesses. > > Ian > > > > 在 2018年8月22日星期三 UTC+8下午10:34:35,Ian Lance Taylor写道: > >> > >> On Wed, Aug 22, 2018 at 3:25 AM, <nea...@gmail.com> wrote: > >> > > >> > When I copy the sync.Pool's source code in a repo, and using > >> > `//go:linkname` > >> > link those runtime functions manually. > >> > When I run `go test -race`, it reports `DATA RACE`. > >> > But the sync.Pool with the same test case does not report `DATA > RACE`. > >> > > >> > Does runtime.RaceDisable not work in non-std library ? > >> > >> It should work. I think you'll have to show us your code. > >> > >> Ian > > > > -- > > You received this message because you are subscribed to the Google > Groups > > "golang-nuts" group. > > To unsubscribe from this group and stop receiving emails from it, send > an > > email to golang-nuts...@googlegroups.com <javascript:>. > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.