同时安全的时间。位置

时间:2016-07-12 10:30:48

标签: go

time.Location是否可以安全地同时访问time.LoadLocation("...")

我问这个是因为我看到它确实考虑了夏令时的计算(它是否访问从数据zip文件加载的地图?它是否实时计算?我们是否需要锁定它?或者重新加载很快足以每次都这样做吗?)。

1 个答案:

答案 0 :(得分:0)

Location上唯一公开的方法是StringLocation本身的定义没有导出字段:

type Location struct {
        // contains filtered or unexported fields
}

因此,一旦创建,它应该在其余生中保持不可修改。因此它应该是安全的并发访问。

对于LoadLocation,它确实从文件中读取。因此,您可以使用互斥锁保护每次调用LoadLocation

  

LoadLocation所需的时区数据库可能不存在   所有系统,尤其是非Unix系统。 LoadLocation查找   由ZONEINFO环境命名的目录或未压缩的zip文件   变量(如果有的话)然后查看Unix上的已知安装位置   系统,最后查看$ GOROOT / lib / time / zoneinfo.zip。