問題タブ [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.
java - メモリ内の多数の ThreadLocalMap エントリ
非常に多くのスレッドが Web サーバーを実行している非常に大きな Java VM を考えてみましょう。
によって生成された出力のサンプルは、次のjmap -histo
ようになります。
除算を行うと、java.lang.ThreadLocal$ThreadLocalMap$Entry
スレッドごとに 256 のインスタンスがあることがわかります。ほとんどの ThreadLocals が大量の値を格納するべきではないことを考えると、予想以上に高い数字です。ThreadLocal-leak-detection 機能を使用すると、Tomcat にはそれほど多くは表示されません。
これらの ThreadLocalMaps がメモリを大量に消費する理由は何ですか?
google-app-engine - Google App Engineにデプロイするときに、静的フィールド内にデータを保存することはスレッドセーフですか?
Google AppEngineでホストされているオープンソースのCMSであるVosaoCMSのコードを閲覧していて(これは素晴らしいアイデアだと思います)、CurrentUserクラス内で次のコードを見つけました。
私はGAEを使ったことがありませんが、これは私には本当に奇妙に聞こえます。
GAEは本当に「シングルスレッド」ですか?GAEを使用する場合、リクエストスコープのデータを静的フィールド内に保存しても安全ですか?
これは、JVMインスタンスごとに、他のすべてのリクエストが待機している間、一度に1つのHTTPリクエストのみが実行されることを意味しますか?
これは一般的なGAEイディオムですか?そうでない場合、リクエストの期間中、そのようなUserEntityを保存するのに最適なGAEイディオムは何でしょうか?Spring Securityのように、ここでThreadLocalを使用するべきではありませんか?または、ある種のスコープ付きBean(依存性注入コンテナーによって管理される)ですか?
c++ - 「このターゲットではサポートされていないスレッド ローカル ストレージ」、適切な #ifdef?
すべてのコンパイラには独自のバージョンのスレッド ローカル ストレージがあるため、最終的にはそのためのマクロを作成しました。唯一の問題は、GCC (pthreads がオフになっている) であり、次のようになります。
「このターゲットではスレッドローカルストレージはサポートされていません」
この場合、pthreads が実際にオフになっていることを考えると、それで十分です。問題は、 #ifdef __GCC_XXX_NO_THREADS_XXX などのマクロを使用してこれを検出する一般的な方法があるかどうかです。
編集:以下の受け入れられた回答を参照してください。また、ここに私の怠惰な解決策があります:
これはMac OS X上にあります。ポータブルかどうかはわかりません...
unix - ThreadLocal 集約とタスク並列ライブラリ
以下のコードのセクションで異なる結果が得られるのはなぜですか
コード例 1
サンプル 2
python - Python のスレッド ローカル - スケーラビリティに関してネガティブですか?
スレッドローカルを使用することで、自分自身のために作成する可能性のある深刻な影響があるかどうか疑問に思っています。Flask の場合、スレッド ローカルを使用していることに気付き、スレッドを考慮して構築されていないサーバーで問題が発生する可能性があることに言及しました。これは時代遅れの懸念ですか?私はDjangoでスレッドローカルをいくつか使用しています.Postgresを使用してUbuntu 10.04にUWSGIまたはGunicornの前にNGINXを配置しています(OSまたはDBはおそらく重要ではありませんが、明確にするためです)。心配する必要がありますか?
java - Java - Eclipse で 'ThreadLocal' 変数の値をチェックする方法は?
ThreadLocal
Web アプリにいくつかの が設定されています。そして、webapp のリモート デバッグ中に、これらのThreadLocal
変数の値を確認したいと思います (デバッグ パースペクティブの変数タブに他の変数を表示するのEclipse
と同じように)。Eclipse
ThreadLocal
デバッグ中に変数の値を表示するにはどうすればよいEclipse
ですか?
ありがとう!
java - スレッド化、配列、キャッシュ メモリについて質問する
私は良い方法で願っています:-)私はこのコードを書きました。私がやりたかったのは、「キャッシュ」のようなものを構築することです。多くの呼び出しがそのクラスに到達する可能性があるため、さまざまなスレッドを監視する必要があると想定したため、ThreadLocal 機能を試しました。基本パターンには「VECTOR の多数のセット」があります。ベクターには次のようなものがあります。 VECTOR.FieldName = "X" VECTOR.FieldValue= "Y" セット内の非常に多くの Vector オブジェクト。異なるマシン、ユーザー、オブジェクトからの異なる呼び出しに対して異なるセット。
だから...私はそれを添付して、次のように使用します:
良い点: Bufferedline は、データ ファイルの区切り文字に基づいて分割された行です。ファイルは任意のサイズにすることができます。
では、このコードをどのように見ますか? 私は心配する必要がありますか?このメッセージのサイズについてお詫び申し上げます。
java - EJB3 で ThreadLocal 変数を使用する固有の危険性?
サブジェクト クラスを ThreadLocal マップに格納することで、承認と認証のソリューションを試しています。設計は API 用であるため、関連するサーブレットにはアクセスできず、EJB3 を使用する必要があります (したがって、CDIはオプションではありません)。EJB3 での ThreadLocal の使用についていくつか質問があります
各リクエストが完了後に ThreadLocal マップを消去すると仮定すると、ステートレス セッション Bean で ThreadLocal 変数を使用するリスクはありますか? つまり、2 つのリクエストが同時に同じスレッドにアクセスするリスクはありますか?
完了後にサーブレットに ThreadLocal をクリーンアップさせる方法はありますか? 私はインターセプターを調べましたが、EJB3 ではうまく機能せず、さまざまなアプリケーション サーバーでさまざまにうまく機能することを理解しました。その他の方法で?
java - ThreadLocal - コンストラクターで値を設定する場合は必要ですか?
Callable <String> を実装するクラス MyThread があります。このクラスには、blockingqueue などのパラメーターを受け取るコンストラクターがあります。メイン クラスでは、このクラス MyThread を新しいブロッキング キューとその他のパラメーターでインスタンス化します。また、2 つのマップを維持します。1 つは一意のパラメーターの 1 つをキーとして MyThread 参照を保持し、もう 1 つは同じ一意のキーを使用してブロック キュー参照を保持します。
プロセス中に、ハッシュマップからこのブロッキング キューを取得し、カスタム メッセージを追加して、対応する MyThread インスタンスを取得し、ThreadPoolTaskExecutor (Spring バージョン) に送信します。
私が理解している限り、各スレッドは、構築中に値を渡し、後で ThreadPoolTaskExecutor.submit(myThreadObj) を使用してスレッドを作成するため、値の独自のコピー (ブロッキング キューなど) を取得する必要があります。それが本当かどうか、またはこのシナリオで ThreadLocal を使用する必要があるかどうかを誰かが確認できるかどうか疑問に思っていました。これまでのテストでは問題は発生しませんでしたが、負荷テストはまだ行っていません。
前もって感謝します。
c# - ThreadLocal でスレッドセーフな通常のクラスにする
thread-safe
単一のスレッドがアクセスするように設計された通常のクラスがあり、多くのスレッドが同時に単一のインスタンスを使用できるようにしたいと考えています。いくつかのクラス レベルのメソッドと変数があり、静的にしてlocks
make それらを使用しますthread-safe
。また、ローカル変数のみを使用するメソッドはデフォルトで安全です (各スレッドにはスタックがあります)。
私の質問properties
は、古いクラス、またはより一般的には任意のnon-static
変数についてです。単純に使用できThreadLocal<T>
、各スレッドには独自のセットがありproperties
ますか? 確かに私は内部locks
で他の問題を使用します(私は安全だと思います)。thread-safety
setters
getters
そして、ThreadLocal<T>
パフォーマンスキラーですか?