On Fri, Sep 16, 2022 at 7:43 AM robert engels <reng...@ix.netcom.com> wrote:

> After some analysis and discussion, the sample I provided earlier has a data 
> race by definition - although in many cases these are benign and do no affect 
> the correctness of the program.

There's no such thing [in Go and many other languages] as a benign
data race: 
https://docs.google.com/document/d/1WAT22FtFdMt43i3O8YrnlQTNTzZ3IoJBtu3P2DNRytg/edit

> E.g. the program may be “sampling” and so any valid value read is “ok”.

Even when we forget that a data race can crash your program on certain
HW, the above quoted means you can replace the read with a PRNG, but
then, assuming your code is still correct, why bother with the read at
all? Because a racy read can produce not only some "old" value vs
"new" value with some probability. The racy read can produce any value
at all. Sure, at least some architectures have stronger guarantees and
they really produce "old" or "new" and nothing else, for certain sizes
and/or alignments of values. But not in the general case or for any
architecture that Go may support in the future.

tl;dr: You must always fix a data race, there are no exceptions.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAA40n-X5cK9eZpCRAi-yRO9X6s287KF6Dy%3Ds%2BL2%2BqM2CjW2cqQ%40mail.gmail.com.

Reply via email to