On Thu, Aug 23, 2018 at 12:43 AM,  <buaa....@gmail.com> 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+unsubscr...@googlegroups.com.
> 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.

Reply via email to