On Thu, Nov 3, 2016 at 10:19 PM, 刘桂祥 <liuguixiang...@gmail.com> wrote: > can you explain why whis ?
A map is basically a pointer to a complex data structure. Setting a value in a map changes that data structure. If one goroutine is reading from the data structure while a different goroutine is writing to the data structure, the results are completely unpredictable. In the worst case they could even cause the program to crash. Ian > 在 2016年11月4日星期五 UTC+8下午1:16:39,Ian Lance Taylor写道: >> >> On Thu, Nov 3, 2016 at 8:37 PM, 刘桂祥 <liuguix...@gmail.com> wrote: >> > // example.go >> > >> > package main >> > >> > var gMap = make(map[int]int) >> > >> > func w() { >> > temp := make(map[int]int) >> > temp[1] = 100 >> > temp[2] = 200 >> > gMap = temp // Does the compiler or cpu will reorder temp[1]=100, >> > temp[2]=200, gMap=temp ?? >> > } >> > >> > func r() { >> > local := gMap >> > println(local[1], local[2]) >> > } >> > >> > func main() { >> > >> > go w() >> > go r() >> > >> > // ... >> > } >> > >> > I have one goroutine to read the map and one goroutine to rewrite the >> > global >> > map variable does this safe ?? >> >> No. Use a lock. >> >> 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. > For more options, visit https://groups.google.com/d/optout. -- 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.