我是 Golang 的新手,开始使用 goroutines。我很好奇在不使用通道或互斥锁的情况下从另一个 goroutine 写入的数据结构中读取是否安全。在下面的示例中,events数组对 main 和 goroutine 可见,但 main 只读取它,而 goroutine 正在修改它。这被认为是安全的吗?
var events = []string{}
func main() {
go func() {
for {
if len(events) > 30 {
events = nil
}
event := "The time is now " + time.Now().String()
events = append(events, event)
time.Sleep(time.Millisecond * 200)
}
}()
for {
for i:=0; i < len(events); i++ {
fmt.Println(events[i])
}
time.Sleep(time.Millisecond * 100)
fmt.Println("--------------------------------------------------------")
}
}
蝴蝶刀刀
相关分类