The way I read the section about programs with memory races (https://go.dev/ref/mem#restrictions), that program should always print 1.
"A read r of a memory location x holding a value that is not larger than a machine word must observe some write w such that r does not happen before w and there is no write w' such that w happens before w' and w' happens before r. That is, each read must observe a value written by a preceding or concurrent write." i=0 happens before all i=1s, and at least one i=1 happens before the read of i. On Sat, Jul 6, 2024 at 3:04 PM Ian Lance Taylor <i...@golang.org> wrote: > > On Sat, Jul 6, 2024 at 7:34 AM 'qiu laidongfeng2' via golang-nuts > <golang-nuts@googlegroups.com> wrote: > > > > I know not to write code with data races? > > The problem is that I find that this code always outputs 1 on the amd64 > > machine, > > I am not sure what effect this data competition has on the execution result, > > whether it is an inevitable result of the amd64 machine to always output 1 > > or I am lucky to encounter that it is always output 1, so I ask. > > I would be surprised if that program ever prints anything other than 1 > in practice. But I am sometimes surprised. > > Ian > > > > 在2024年7月6日星期六 UTC+8 22:20:57<Ian Lance Taylor> 写道: > >> > >> On Sat, Jul 6, 2024 at 7:04 AM 'qiu laidongfeng2' via golang-nuts > >> <golan...@googlegroups.com> wrote: > >> > > >> > Does data race in this program affect execution results? > >> > In amd64, it always output1. > >> > >> If you want to write code like this, use the sync/atomic package. > >> Don't write code with data races. > >> > >> 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. > > To view this discussion on the web visit > > https://groups.google.com/d/msgid/golang-nuts/6a2c3ebf-b5e9-4a18-bcf3-d7a4b5fc24a4n%40googlegroups.com. > > -- > 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/CAOyqgcWv7w%3DUEG0eZsZFYTpodX2cgXmXO_6QkgxeJ5A7VKDXAg%40mail.gmail.com. -- 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/CAMV2Rqo4-RYjhsNnROYkterTUaZKq2MyV1bhUYKJ-6-sxCufFA%40mail.gmail.com.