問題タブ [thread-local-storage]
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 Threading で自動的にスレッドローカルになるものとそうでないものは何ですか?
特にドキュメントでは、関連情報を親切に含めるのではなく、いくつかの時点で RTFS を明示的に指示しているため、Python スレッド化について頭を悩ませています。threading モジュールを読む資格がないことは認めます。私は非常に単純な例をたくさん見てきましたが、それらはすべてグローバル変数を使用しています。これは攻撃的であり、便利なだけでなく、いつ、どこで使用する必要があるかを本当に知っている人がいるのだろうかと思います。
特に知りたいのは:
- では
threading.Thread(target=x)
、x
共有または非公開ですか? 各スレッドは独自のスタックを持っていますか、それともすべてのスレッドが同じコンテキストを同時に使用していますか? - 変更可能な変数をスレッドに渡すための推奨される方法は何ですか? 不変のものは明らかに通過
Thread(args=[],kwargs={})
しており、それがすべての例でカバーされています。グローバルだと鼻をつまんで使わないといけないのですが、もっといい方法がありそうです。すべてをクラスにラップしてインスタンスを渡すだけでよいと思いますが、通常の変数も指定するとよいでしょう。 - いつ必要
threading.local()
ですか?上記でx
? - 多くの例が示すように、データを更新するためにスレッドをサブクラス化する必要がありますか?
私は Win32 スレッドと pthreads に慣れています。そこでは、スレッドのさまざまな用途で共有されるものと共有されないものをドキュメントに明示的に配置しています。これらはかなり低レベルであり、可能であれば _thread を避けて Pythonic にしたいと考えています。
関連性があるかどうかはわかりませんが、OpenMP スタイルをスレッド化してコツをつかもうとしています。キューといくつかのスレッドを使用して for ループを同時に実行します。グローバルとロックを使えば簡単でしたが、今度はロックをより使いやすくするためにスコープを絞り込みたいと思います。
python - Django、ロケール、およびスレッド ローカル
django.utils.translation.activate
特に特定のWebサーバーで実行している場合、ローカライズにスレッドローカルを使用するDjangoに問題はありますか(たとえば、を参照)?
したがって、djangoプロジェクトを実行できるサーバーの選択に対する制限ですか?
ところで、Django が既に単独で実行している場合、Django でスレッド ローカルを使用することは良い考えではないことをいくつかの場所で読んで驚いています...
更新( Why is using thread locals in Django bad? との違いを作るための言い換え):
現在の実装は、Django を実行する一部の Web サーバーに関して「危険」ですか? そして、Django はスレッドに依存しないものに進化するのでしょうか?
c++ - C++ 11のthread_local変数は自動的に静的ですか?
次の 2 つのコード セグメントに違いはありますか。
と
バックストーリー: もともと私は STATIC ベクトル V (いくつかの中間値を保持するため、関数に入るたびにクリアされます) とシングルスレッド プログラムを持っていました。プログラムをマルチスレッド化したいので、どうにかしてこの static 修飾子を取り除かなければなりません。私の考えは、すべての static を thread_local に変えて、他に何も心配しないことですか? このアプローチは裏目に出る可能性がありますか?
multithreading - Issue with thread_specific_ptr data deletion at thread end
I use the thread local storage with boost. I have a global variable :
and I have the following class, which encapsulates a boost::thread object and contains an additionnal data object :
I do not get any error when compiling. But on runtime, when the worker function exits and the thread ends, I get a "glibc ... free ... invalid pointer" error.
I guess this comes from the fact that, according to the boost doc, the thread_specific_ptr tries to delete the object it points to when threads end. But I do not see how to solve the problem.
linux - Linux のライブラリで使用されるスレッド ローカル ストレージ モデルを特定する方法はありますか
Linux で共有ライブラリの TLS モデルを照会する方法はありますか? (例: ldd やその他のツールを使用)。
「initial-exec」モデルであまりにも多くのライブラリをロードすることに問題があり、このモデルを使用しているサードパーティのライブラリを確実に特定したいと考えています (静的にリンクするなどして、いくつかのスロットを解放できるようにします)。
これにより、エラーが発生します。
この質問を参照してください。
multithreading - スレッド ローカル ブースト fast_pool_allocator
各スレッドが一時的なを使用するマルチスレッド (Cilk) プログラムがあります
std::set
。これらには多くの割り当てがあるstd::set
ため、いくつかのプール アロケーターを使用しようとしていますboost::fast_pool_allocator
。
しかし、アロケータへの同時アクセスにより、パフォーマンスが大幅に低下しています。重要な事実の 1 つは、スレッド ローカル アロケーターを使用できるように、セットがスレッド間でやり取りされないことです。ただし、前のコードで示したように、アロケーター オブジェクトを構築するのではなく、テンプレート パラメーターをstd::set
コンストラクターに渡します。
だからここに私の質問が
boost::fast_pool_allocator
あります.スレッドローカルプールアロケーターとして使用するために複数を構築することは可能ですか?
編集std::pair
:愚かな割り当てを削除しました。
python - スレッド ローカルを使用した Python ロギング
ユーザーの電子メールをすべての Web アプリ ログの先頭に追加したいと考えています。
メール (Cookie などから取得) を に保存できますthreading.local()
。しかし、変数がスレッドローカルにあるとは限りません。
アプリ内のすべてのロガーにそのように動作するように指示する方法はありますか?
xcode - c++ スレッド ローカル ストレージ clang-503.0.40 (Mac OSX)
この方法で変数を宣言した後:
「g++ -std=c++0x -pthread [ソースファイル]」を使用してコードをコンパイルしようとしました。次のエラーが表示されます。
同じフラグを指定して GCC 4.8.1 を使用して Linux で同じコードをコンパイルしようとすると、機能する実行可能ファイルが得られます。OSX 10.9.3 を実行している MacBook Pro で clang-503.0.40 (Xcode 5.1.1 に付属するもの) を使用しています。誰かが私が間違っていることを説明できますか? ありがとうございました!!
c# - スレッドが終了したときに ThreadLocal 値を破棄する方法は?
使い捨てタイプがあるとしましょう:
次に、スレッドごとに 1 つずつ、このクラスのローカル コピーをすべてのスレッドに持たせます。
ここで、スレッドが終了する直前Dispose()
に、値が作成されている場合は値を呼び出すことを確認したいと思います。それを行う方法はありますか?アプリケーションのスレッドには、存続期間が短いスレッドもあれば、存続期間が長いスレッドもあります。寿命の短いものは、その値を確実に処分したいと考えています。
boost - thread_specific_ptr スレッド セーフ アクセス
次のコードスニペットがあります
私の理解では、各スレッドには tls_node に許可された独自のスペースがあります。これは、get() と reset() を呼び出すコンストラクターがスレッドセーフであることを意味します。
私の理解は正しいですか?
ありがとう。