从time.LoadLocation("...")获取的time.Location可以安全地并发访问吗?
我之所以这样问,是因为我看到它在计算中考虑了夏令时(它是否访问从数据压缩文件加载的地图?它是实时计算的吗?我们需要锁住它吗?或者每次重新加载都足够快?)。
发布于 2016-07-12 19:55:05
Location上唯一公开的方法是String。Location本身没有定义任何导出的字段:
type Location struct {
// contains filtered or unexported fields
}因此,一旦创建,它应该在其余生中保持不可修改。因此,它应该是安全的并发访问。
至于LoadLocation,它确实从文件中读取数据。所以你可以让一个互斥锁来保护每一个对LoadLocation的调用。
LoadLocation所需的时区数据库可能并不存在于所有系统上,尤其是非Unix系统。ZONEINFO查找由环境变量ZONEINFO指定的目录或未压缩的LoadLocation文件(如果有的话),然后查找Unix系统上的已知安装位置,最后查找$GOROOT/lib/time/zoneinfo.zip.
https://stackoverflow.com/questions/38326313
复制相似问题