問題タブ [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.

0 投票する
3 に答える
3250 参照

java - メモリ内の多数の ThreadLocalMap エントリ

非常に多くのスレッドが Web サーバーを実行している非常に大きな Java VM を考えてみましょう。

によって生成された出力のサンプルは、次のjmap -histoようになります。

除算を行うと、java.lang.ThreadLocal$ThreadLocalMap$Entryスレッドごとに 256 のインスタンスがあることがわかります。ほとんどの ThreadLocals が大量の値を格納するべきではないことを考えると、予想以上に高い数字です。ThreadLocal-leak-detection 機能を使用すると、Tomcat にはそれほど多くは表示されません。

これらの ThreadLocalMaps がメモリを大量に消費する理由は何ですか?

0 投票する
2 に答える
461 参照

google-app-engine - Google App Engineにデプロイするときに、静的フィールド内にデータを保存することはスレッドセーフですか?

Google AppEngineでホストされているオープンソースのCMSであるVosaoCMSのコードを閲覧していて(これは素晴らしいアイデアだと思います)、CurrentUserクラス内で次のコードを見つけました。

私はGAEを使ったことがありませんが、これは私には本当に奇妙に聞こえます。

  • GAEは本当に「シングルスレッド」ですか?GAEを使用する場合、リクエストスコープのデータを静的フィールド内に保存しても安全ですか?

  • これは、JVMインスタンスごとに、他のすべてのリクエストが待機している間、一度に1つのHTTPリクエストのみが実行されることを意味しますか?

  • これは一般的なGAEイディオムですか?そうでない場合、リクエストの期間中、そのようなUserEntityを保存するのに最適なGAEイディオムは何でしょうか?Spring Securityのように、ここでThreadLocalを使用するべきではありませんか?または、ある種のスコープ付きBean(依存性注入コンテナーによって管理される)ですか?

0 投票する
2 に答える
6557 参照

c++ - 「このターゲットではサポートされていないスレッド ローカル ストレージ」、適切な #ifdef?

すべてのコンパイラには独自のバージョンのスレッド ローカル ストレージがあるため、最終的にはそのためのマクロを作成しました。唯一の問題は、GCC (pthreads がオフになっている) であり、次のようになります。

「このターゲットではスレッドローカルストレージはサポートされていません」

この場合、pthreads が実際にオフになっていることを考えると、それで十分です。問題は、 #ifdef __GCC_XXX_NO_THREADS_XXX などのマクロを使用してこれを検出する一般的な方法があるかどうかです。

編集:以下の受け入れられた回答を参照してください。また、ここに私の怠惰な解決策があります:

これはMac OS X上にあります。ポータブルかどうかはわかりません...

0 投票する
1 に答える
287 参照

unix - ThreadLocal 集約とタスク並列ライブラリ

以下のコードのセクションで異なる結果が得られるのはなぜですか

コード例 1

サンプル 2

0 投票する
1 に答える
1525 参照

python - Python のスレッド ローカル - スケーラビリティに関してネガティブですか?

スレッドローカルを使用することで、自分自身のために作成する可能性のある深刻な影響があるかどうか疑問に思っています。Flask の場合、スレッド ローカルを使用していることに気付き、スレッドを考慮して構築されていないサーバーで問題が発生する可能性があることに言及しました。これは時代遅れの懸念ですか?私はDjangoでスレッドローカルをいくつか使用しています.Postgresを使用してUbuntu 10.04にUWSGIまたはGunicornの前にNGINXを配置しています(OSまたはDBはおそらく重要ではありませんが、明確にするためです)。心配する必要がありますか?

0 投票する
3 に答える
3443 参照

java - Java - Eclipse で 'ThreadLocal' 変数の値をチェックする方法は?

ThreadLocalWeb アプリにいくつかの が設定されています。そして、webapp のリモート デバッグ中に、これらのThreadLocal変数の値を確認したいと思います (デバッグ パースペクティブの変数タブに他の変数を表示するのEclipseと同じように)。Eclipse

ThreadLocalデバッグ中に変数の値を表示するにはどうすればよいEclipseですか?

ありがとう!

0 投票する
1 に答える
197 参照

java - スレッド化、配列、キャッシュ メモリについて質問する

私は良い方法で願っています:-)私はこのコードを書きました。私がやりたかったのは、「キャッシュ」のようなものを構築することです。多くの呼び出しがそのクラスに到達する可能性があるため、さまざまなスレッドを監視する必要があると想定したため、ThreadLocal 機能を試しました。基本パターンには「VECTOR の多数のセット」があります。ベクターには次のようなものがあります。 VECTOR.FieldName = "X" VECTOR.FieldValue= "Y" セット内の非常に多くの Vector オブジェクト。異なるマシン、ユーザー、オブジェクトからの異なる呼び出しに対して異なるセット。

だから...私はそれを添付して、次のように使用します:

良い点: Bufferedline は、データ ファイルの区切り文字に基づいて分割された行です。ファイルは任意のサイズにすることができます。

では、このコードをどのように見ますか? 私は心配する必要がありますか?このメッセージのサイズについてお詫び申し上げます。

0 投票する
3 に答える
1727 参照

java - EJB3 で ThreadLocal 変数を使用する固有の危険性?

サブジェクト クラスを ThreadLocal マップに格納することで、承認と認証のソリューションを試しています。設計は API 用であるため、関連するサーブレットにはアクセスできず、EJB3 を使用する必要があります (したがって、CDIはオプションではありません)。EJB3 での ThreadLocal の使用についていくつか質問があります

  1. 各リクエストが完了後に ThreadLocal マップを消去すると仮定すると、ステートレス セッション Bean で ThreadLocal 変数を使用するリスクはありますか? つまり、2 つのリクエストが同時に同じスレッドにアクセスするリスクはありますか?

  2. 完了後にサーブレットに ThreadLocal をクリーンアップさせる方法はありますか? 私はインターセプターを調べましたが、EJB3 ではうまく機能せず、さまざまなアプリケーション サーバーでさまざまにうまく機能することを理解しました。その他の方法で?

0 投票する
1 に答える
349 参照

java - ThreadLocal - コンストラクターで値を設定する場合は必要ですか?

Callable <String> を実装するクラス MyThread があります。このクラスには、blockingqueue などのパラメーターを受け取るコンストラクターがあります。メイン クラスでは、このクラス MyThread を新しいブロッキング キューとその他のパラメーターでインスタンス化します。また、2 つのマップを維持します。1 つは一意のパラメーターの 1 つをキーとして MyThread 参照を保持し、もう 1 つは同じ一意のキーを使用してブロック キュー参照を保持します。

プロセス中に、ハッシュマップからこのブロッキング キューを取得し、カスタム メッセージを追加して、対応する MyThread インスタンスを取得し、ThreadPoolTask​​Executor (Spring バージョン) に送信します。

私が理解している限り、各スレッドは、構築中に値を渡し、後で ThreadPoolTask​​Executor.submit(myThreadObj) を使用してスレッドを作成するため、値の独自のコピー (ブロッキング キューなど) を取得する必要があります。それが本当かどうか、またはこのシナリオで ThreadLocal を使用する必要があるかどうかを誰かが確認できるかどうか疑問に思っていました。これまでのテストでは問題は発生しませんでしたが、負荷テストはまだ行っていません。

前もって感謝します。

0 投票する
2 に答える
947 参照

c# - ThreadLocal でスレッドセーフな通常のクラスにする

thread-safe単一のスレッドがアクセスするように設計された通常のクラスがあり、多くのスレッドが同時に単一のインスタンスを使用できるようにしたいと考えています。いくつかのクラス レベルのメソッドと変数があり、静的にしてlocksmake それらを使用しますthread-safe。また、ローカル変数のみを使用するメソッドはデフォルトで安全です (各スレッドにはスタックがあります)。

私の質問propertiesは、古いクラス、またはより一般的には任意のnon-static変数についてです。単純に使用できThreadLocal<T>、各スレッドには独自のセットがありpropertiesますか? 確かに私は内部locksで他の問題を使用します(私は安全だと思います)。thread-safetysettersgetters

そして、ThreadLocal<T>パフォーマンスキラーですか?