我正在编程并使用互斥锁来锁定某些变量,以便在读取时不会被覆盖。
这让我思考。因为你可以多次读取变量。是否有必要锁定常量变量的情况?
答案 0 :(得分:6)
规则很简单:如果多个goroutine同时访问variable,并且至少有一个访问是写入,则需要同步。
如果我们谈论constants,那么就没有变量,你不能获取常量的地址(详见Find address of constant in go),因此无法修改常量值。
您不需要任何同步来访问多个goroutine中的常量。
答案 1 :(得分:0)
如果你谈论常量,就不需要使用同步例程来访问它们(正如@icza建议的那样)。
但是如果你把const视为变量,一旦赋值给它的值就不能改变,那么你应该小心因为golang内存模型和happens before关系。