web-dev-qa-db-ja.com

GoにはJavaのThreadLocalのようなものがありますか?

GoとGinを使用してWebサイトをセットアップし、データベースのアクセス時間を知りたいです。私はゴルーチンを使用しているので、スレッドローカルのようなものを使用しない場合は、それを行うためにほとんどすべての関数を変更する必要があります。 Goにはそれを行う良い方法がありますか?

16
modkzs

Goランタイムおよび標準ライブラリは、ゴルーチンローカルストレージまたはゴルーチンローカルストレージの実装に使用できるゴルーチン識別子を提供しません。

サードパーティ gls パッケージは、興味深い方法でゴルーチンのローカルストレージを実装します。このパッケージが恐ろしいと感じる人もいれば、賢いと思う人もいます。

Goチームは、goroutineローカルストレージを使用する代わりに、関数の引数としてコンテキストを明示的に渡すことをお勧めします。詳細については、 コンテキストブログ投稿 および パッケージドキュメント を参照してください。

21
Cerise Limón