Go同时读取和写入数组是否安全

时间:2016-12-06 18:39:50

标签: go concurrency

这可以安全使用吗?如果读取例程读取部分更新的数组并不重要,但我需要它来保持所有值的完整性。所有3个例程都在循环中运行

var arr [100]byte

go ReadFrom(arr)
go ReadFrom(arr)
go WriteTo(arr)

2 个答案:

答案 0 :(得分:2)

@Pownyan,不,不安全,正如JimB在评论中提到的那样。您需要使用互斥锁才能确保安全:https://golang.org/pkg/sync/#Mutex

示例:https://gobyexample.com/mutexes

答案 1 :(得分:0)

不,它不安全,您需要使用sync软件包Mutex或Waitgroup取决于解决方案流的类型,我建议使用Mutex,因为它比其他{更便宜}基于{1}}的解决方案。

请查看示例here