Shouldn't this particular case be ok? From the memory doc: https://golang.org/ref/mem
The go statement that starts a new goroutine happens before the goroutine's > execution begins. So the write has to happen before the goroutine starts. At least that's what the example indicates: > For example, in this program: var a string func f() { print(a) } func hello() { a = "hello, world" go f() } > calling hello will print "hello, world" at some point in the future > (perhaps after hello has returned). On Sunday, January 8, 2017 at 1:17:56 PM UTC-5, 陈诚 wrote: > Is the size of a pointer value 32 bits or 64 bits in golang when build > with `GOARCH=amd64` option specified and running on 64-bit OS? > If it's 64-bit size, is a global pointer value 8-byte aligned in memory so > that a read or write operation of that pointer value is carried out > atomically? > For example, in the following code, is it possible that the global pointer > p is only partially updated when the read goroutine read the pointer? > var p *int > > void main() { > i := 1 > p = &i > go func() { fmt.Println(*p) } () > } > > The scenario I'm concerning is that there is only one write but multiple > reads on a global pointer value, and reading of an old value of the pointer > is not important. Thanks in advance! > -- 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.