問題タブ [thread-local]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python の「スレッド ローカル ストレージ」とは何ですか? なぜ必要なのですか?
特に Python では、スレッド間で変数がどのように共有されるのでしょうか?
以前に使用したthreading.Thread
ことはありますが、変数がどのように共有されるかを本当に理解したり、例を見たりしたことはありませんでした。それらはメインスレッドと子の間で共有されますか、それとも子の間でのみ共有されますか? この共有を避けるためにスレッド ローカル ストレージを使用する必要があるのはいつですか?
ロックを使用してスレッド間で共有データへのアクセスを同期することに関する多くの警告を見てきましたが、問題の本当に良い例をまだ見ていません。
前もって感謝します!
.net - .NETでスレッドローカルストレージを使用するためのベストプラクティスは何ですか?
私のアプリケーションには、スレッドローカルストレージを使用することで満たすことができると思う要件がありますが、それが避けるのが最善の方法の1つであるかどうか疑問に思っています。
私はこの主題に関するいくつかの記事を読みました:
http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=58
http://msdn.microsoft.com/en-us/library/system.threadstaticattribute(vs.80).aspx
私はそれを使う方法を知っています、私はそれを使うべきかどうか疑問に思っています。
何かアドバイス、知っておくべきことはありますか?
[編集]
ユースケースは次のとおりです。
私は、各クエリについて多くのログを記録するいくつかのメソッドを介してすべてのデータアクセスを集中させます。ログに記録するのは、コマンドが入力されたコマンドテキストの完全なダンプです。これにより、トレースログから直接SqlManagementStudioにコピーアンドペーストできます。
Webアプリのglobal.asaxで、未処理の例外が発生したときに、できるだけ多くの情報を記載したメールを管理者に送信します。SqlExceptionが発生したときに、そのsqlコマンドダンプテキストをこの電子メールに入れたいと思います。これにより、クエリが原因でページが爆発したときにトレースログを調べる時間を節約できます。
データアクセスクラスのメソッドシグネチャを変更したくないのは、例外が発生したときに参照を取得するために、スタックの最後まで参照を渡すことができるようにするためです。TLSは「lastsqlcommand」のようなものを置くのに良い場所かもしれないと思っていましたが、それは実行可能な解決策のようには見えません。
java - サーブレットのスレッドローカル変数
threadlocals 変数は、変数を所有するサーブレットに対して行われるすべての要求に対してグローバルですか?
サーバーにはレジンを使用しています。
アンサーありがとう。
自分のことをもっと明確にできると思います。
特定のケース:
したい:
- リクエストが実行を開始するときに静的変数を初期化します。
- リクエストが実行を終了するまで、スレッドセーフな方法でサーブレットから呼び出されたメソッドのさらなる実行で変数の値を照会できる
c# - スレッド ローカル ストレージはバックグラウンド ワーカーの呼び出し間で永続化されますか?
バックグラウンド ワーカー スレッドは再利用されますか?
具体的には、バックグラウンド ワーカーの DoWork() メソッド中に名前付きデータ スロット (スレッド ローカル ストレージ) を設定した場合、そのデータ スロットの値は保持され、後で別のスレッドで見つかる可能性がありますか?
私はそうは思わなかったでしょうが、私にはこのバグがあります...
編集:このブログ投稿は、 BackGroundWorkerがThreadPoolを利用することを示唆しています。これは、スレッドが再利用されることを意味します。したがって、問題は次のようになります。再利用されたスレッドは、呼び出し間でスレッド ローカル ストレージを保持する可能性がありますか?
java - ThreadLocal 変数のパフォーマンス
ThreadLocal
変数からの読み取りは、通常のフィールドからの読み取りよりもどれくらい遅いですか?
ThreadLocal
より具体的には、単純なオブジェクトの作成は、変数へのアクセスよりも速いですか、それとも遅いですか?
十分に高速であるため、インスタンスを作成するよりも毎回ThreadLocal<MessageDigest>
インスタンスを作成する方がはるかに高速であると思います。MessageDigest
しかし、それはたとえば byte[10] や byte[1000] にも当てはまりますか?
ThreadLocal
編集: getを呼び出すときに実際に何が起こっているのかという質問です。それが他のフィールドと同じように単なるフィールドである場合、答えは「常に最速」ですよね?
java - 春の糸
spring と hibernate と struts を使用する Web アプリケーションがあります (Tomcat で実行されます)。
呼び出しシーケンスは次のようなものです...
Struts アクションは、Spring サービス Bean を呼び出し、Spring DAO Bean を呼び出します。DAO 実装は Hibernate 実装です。
問題は 、すべての春の Bean が同じスレッドで実行されるかどうかです。ThreadLocal に何かを保存して、別の Bean で取得できますか?
これは Stateless Session Bean では機能しないと確信しています。EJB コンテナは、セッション Bean への呼び出しごとに新しいスレッドを生成できます (または生成します)。
春のコンテナは同じことをしますか?つまり、すべての Bean を同じスレッドで実行しますか?
JUnit テストを試したとき、テスト ケースと 2 つの Bean で Thread.currentThread().getId() を介して同じ ID を取得しました。
それとも挙動が予測不能?または、Tomcat サーバーで実行すると変更されますか?
明確化 2 つのスレッド間でデータを交換したくありません。データを ThreadLocal に入れ、コール スタック内のすべての Bean からデータを取得できるようにしたいと考えています。これは、すべての Bean が同じスレッドにある場合にのみ機能します
java - ThreadLocal 変数はいつ、どのように使用すればよいですか?
ThreadLocal
いつ変数を使用する必要がありますか?
どのように使用されますか?
java - ThreadLocal; 毎回変数のコピーを作成するのと同じではありませんか?
私はまだThreadLocalの概念について混乱しています。JavaDocや、このあたりに投稿されたその他の関連する質問を読みましたが、専門用語が使用されていて、すべてがあまり役に立ちませんでした。
私はThreadLocalのアイデアを理解しています。つまり、各スレッドには変数の独自のコピーがあります。それで...これは言うこととどう違うのですか...毎回新しい変数を作成しますか?
たとえば、DateFormatterを例として使用します。
2番目の変数が変数の新しいコピーを返すだけの場合、最初の変数は2番目の変数とどのように異なりますか?
ありがとう。
java - ThreadLocal リソースのリークと WeakReference
ThreadLocalについての私の限られた理解は、リソース リークの問題があるということです。この問題は、ThreadLocalでWeakReferencesを適切に使用することで解決できると思います (ただし、この点を誤解している可能性があります)。WeakReference で ThreadLocal を正しく使用するためのパターンまたは例があれば、それが必要です。たとえば、このコード スニペットでは、WeakReference はどこに導入されますか?