2016-07-12 6 views
1

time.Locationtime.LoadLocation("...")から同時に安全にアクセスできますか?時間の同時安全性。場所

計算では夏時間(データzipファイルからロードされたマップにアクセスしていますか?それは生きているのですか?それともロックが必要ですか?毎回それを行うのに十分速い?)。

答えて

0

Locationで公開されている唯一の方法はStringです。 Location自体は無エクスポートフィールドで定義されています。一度作成

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

だから、それはその人生の残りの変更不可能なままにしてください。したがって、安全な同時アクセスが必要です。

LoadLocationはファイルから読み込みます。だから、mutexはLoadLocationへのすべての呼び出しを保護することができます。

LoadLocationが必要とするタイムゾーンデータベースは、すべてのシステム、特にUnix以外のシステムには存在しない場合があります。 LoadLocationは、 ディレクトリ、またはZONEINFO環境変数 の名前の圧縮されていないzipファイル(存在する場合)を探し、Unix システムの既知のインストール場所を探し、最後に$ GOROOT/lib/time/zoneinfo.zipを探します。

+0

「time.Location」が同時に使用することが安全であるかどうかを確認するにはどうすればよいですか?状態を変更するパブリックメソッドはありません。しかし、それは日中の時間に自動的に反応します。この昼間の意識はコンカレントセーフですか?そこに何か変わるものはない? –

+0

申し訳ありませんが、私は「昼間の意識」のビットを取得していません。一度作成された 'time.Location'オブジェクトはその値を変更すべきではありません。このオブジェクトを突然変異させる可能性のある方法を知っていますか? – abhink

+0

't.In(location)'(1年以上に渡って異なる 't '時間の間)を使用すると、夏時間が考慮されます。事実にもかかわらず、それは一度だけ作成されています。それはどうですか?明らかに「純粋な」(副作用のない)計算ではありません。さて、もしそうなら、コンカレントセーフですか? –

関連する問題