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.

Reply via email to