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 [email protected].
For more options, visit https://groups.google.com/d/optout.