問題タブ [threadpool]

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 投票する
1 に答える
232 参照

c# - サーバーで時間指定イベントを効率的に処理する

私の場合、ソケットを処理する CLR スレッドプールと、その他のもの用のマネージド スレッドプールを備えたゲーム サーバーがあります。npcが呪文を唱えたり、一定期間後にデスポーンしたりするようなイベントを処理する最良の方法は何かを理解しようとしています.

new TimedEvent(1500, npc.Cast(Spells.FireBall)); のように、実行したいアクションごとに新しい (管理された) スレッドプール スレッドを取得するある種のタイマー ラッパーを書くことができます。システム時間と照合させますが、そのような複数のタイマーが実行されていると、それぞれ個別に経過時間をチェックするのは非効率的だと思います。ある種のディスパッチャースレッドの方が良いでしょうか?

前もって感謝します。

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

java - WebLogic 8 でスレッド プールを使用するには?

WebLogic 8.1.6 で実行キュー (= スレッド プール) からスレッドを取得/使用/返すにはどうすればよいですか?

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

tomcat - Tomcat スレッド プールの使用スキーマ

サーブレット処理中に利用できるはずのリソースを管理することを目的としたサーブレットフィルターを開発しています。私は Tomcat にあまり詳しくないので、疑問があります。単一のリクエストに対して、添付されたすべてのフィルターとサーブレット自体が単一の (同じ) スレッドによって処理されることが保証されていますか? 言い換えれば、FilterChain.doFilter()メソッドが呼び出し元とは異なるスレッドを使用していないと仮定できますか?

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

c# - スレッドプールで既に実行されているメソッドからの非同期呼び出し

タイトルで申し訳ありませんが、それをより適切に説明する方法が本当にわかりません。サーバー側で受信データを処理するためにスレッドプールを使用しています.1つのメソッドでは、静的メソッドを非同期で呼び出す必要がありますが、その方法がわかりません.

サーバーがクライアントからデータを受信すると、スレッドプールが使用されます。

System.Threading.ThreadPool.QueueUserWorkItem(c.ReadData);

c.ReadData では、静的メソッドを呼び出す必要がありますが、結果は重要ではなく (データを Web サイトに送信します)、それを知る必要はありません。ここで何が最善の解決策なのかわかりません。ありがとうございました!

0 投票する
6 に答える
4478 参照

threadpool - サーブレットへのリクエスト数の制限

サーバーのロジックにより、サーバー上でより多くの仮想メモリを占有するサーブレットがあります。このため、このサーバーへの同時リクエストを制限したいと思います。たとえば、10の同時リクエストのみを処理する必要があります。他のリクエストはキューで待機する必要があります。

カスタムスレッドプールを作成して、このシナリオを処理するためにこのサーブレットに割り当てることはできますか?WebLogicサーバー9.2を使用しています。または、これを行うための他のより良いアプローチはありますか?どんな考えにも感謝します。

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

java - スレッドプールを使用したサーバー プログラムの要求

各クライアントがサーバーにファイルを送信できるように、スレッドプールの概念を使用して複数のクライアント接続を受け入れるサーバー プログラムのコードを探しており、サーバーは対応する応答ファイルを送信して応答する必要があります。

この時点でいくつかのクライアント要求を取得できますが、対応する応答ファイルを含む応答を生成できないため、これを求めています。

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

.net - 誰でも Ami Bar の SmartThreadPool を使用したことがあり、その経験を共有できますか?

代替の ThreadPool 実装を検討しており、Ami Barによる SmartThreadPool実装を見つけました。とても面白そうなので、実際に使った人がいるかどうか質問します。もしそうなら、経験を共有してください。

ありがとう。

PS

私たちのスレッドの使用法は、Ami Bar によって最適であると説明されたものと一致します。多くのスレッドが I/O を長時間実行しています。

ところで、他に興味深い ThreadPool の実装があれば、それらについても聞いてみたいと思います。(Stephen Toub の実装も認識しています)。

0 投票する
10 に答える
25498 参照

java - ThreadPoolExecutorのキューに入れられたすべてのタスクを削除する

ThreadPoolExecutorについてこのかなり単純な質問があります。次の状況があります。キューからオブジェクトを消費し、それらに適切なワーカータスクを作成して、ThreadPoolExecutorに送信する必要があります。これは非常に簡単です。ただし、シャットダウンシナリオ内では、多くのワーカーが実行キューに入れられる場合があります。これらのタスクの1つが1時間実行されている可能性があり、アプリケーションを比較的高速で正常にシャットダウンする必要があるため、既に処理中のタスクを正常に完了する必要があるときに、キューに入れられたすべてのタスクをThreadPoolExecutorから破棄します。

ThreadPoolExecutorのドキュメントにはremove()メソッドがありますが、削除できるのは特定のタスクのみです。パージ()は、すでにキャンセルされた将来のタスクに対してのみ機能します。私のアイデアは、キューに入れられたすべてのタスクを保持しているキューをクリアすることでした。ThreadPoolExecutorはこの内部キューへのアクセスを提供しますが、ドキュメントには次のように記載されています。

getQueue()メソッドを使用すると、監視とデバッグを目的としたワークキューへのアクセスが可能になります。この方法を他の目的に使用することは強くお勧めしません。

したがって、このキューを取得してクリアすることはできません。また、このドキュメントの抜粋には次のように書かれています。

提供されている2つのメソッド、remove(java.lang.Runnable)とpurge()を使用して、キューに入れられた多数のタスクがキャンセルされた場合のストレージの再利用を支援します。

どのように?確かに、エグゼキュータに送信したすべてのタスクのリストを維持できます。シャットダウンの場合は、すべてのエントリを繰り返し処理し、remove()メソッドを使用してThreadPoolExecutorから削除します...しかし...さあ、これはこのリストを維持するためのメモリの浪費と面倒。(たとえば、すでに実行されたタスクを削除する)

ヒントや解決策に感謝します!

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

c++ - ブースト スレッドプール ライブラリの問題

オープン ソース ( http://threadpool.sourceforge.net/ )のブースト スレッドプール ライブラリを使用したいのですが、サンプル プログラム自体でコンパイル エラーが発生します。

/usr/include/boost/./threadpool/./detail/locking_ptr.hpp: コンストラクタ内 âboost::threadpool::detail::locking_ptr::locking_ptr(volatile T&, const volatile Mutex&) [with T = boost::threadpool ::detail::pool_core >, boost::threadpool::fifo_scheduler, boost::threadpool::static_size, boost::threadpool::resize_controller, boost::threadpool::wait_for_all_tasks>, Mutex = boost::recursive_mutex]â:

/usr/include/boost/./threadpool/./detail/pool_core.hpp:331: âbool boost::threadpool::detail::pool_core::resize(size_t) volatile からインスタンス化 [with Task = boost::function0 > 、SchedulingPolicy = boost::threadpool::fifo_scheduler、SizePolicy = boost::threadpool::static_size、SizePolicyController = boost::threadpool::resize_controller、ShutdownPolicy = boost::threadpool::wait_for_all_tasks]â

/usr/include/boost/./threadpool/size_policies.hpp:75: âstatic void boost::threadpool::static_size::init(Pool&, size_t) からインスタンス化 [with Pool = boost::threadpool::detail::pool_core] >、boost::threadpool::fifo_scheduler、boost::threadpool::static_size、boost::threadpool::resize_controller、boost::threadpool::wait_for_all_tasks>]â

/usr/include/boost/./threadpool/pool.hpp:103: âboost::threadpool::thread_pool::thread_pool(size_t) からインスタンス化 [with Task = boost::function0 >, SchedulingPolicy = boost::threadpool:: fifo_scheduler、SizePolicy = boost::threadpool::static_size、SizePolicyController = boost::threadpool::resize_controller、ShutdownPolicy = boost::threadpool::wait_for_all_tasks]â

./example/mergesort/mergesort.cpp:152: ここからインスタンス化

/usr/include/boost/./threadpool/./detail/locking_ptr.hpp:50: エラー: 「class boost::recursive_mutex」には「lock」という名前のメンバーがありません

/usr/include/boost/./threadpool/./detail/locking_ptr.hpp: デストラクタ内 âboost::threadpool::detail::locking_ptr::~locking_ptr() [with T = boost::threadpool::detail:: pool_core >、boost::threadpool::fifo_scheduler、boost::threadpool::static_size、boost::threadpool::resize_controller、boost::threadpool::wait_for_all_tasks>、Mutex = boost::recursive_mutex]â:

/usr/include/boost/./threadpool/./detail/pool_core.hpp:331: âbool boost::threadpool::detail::pool_core::resize(size_t) volatile からインスタンス化 [with Task = boost::function0 > 、SchedulingPolicy = boost::threadpool::fifo_scheduler、SizePolicy = boost::threadpool::static_size、SizePolicyController = boost::threadpool::resize_controller、ShutdownPolicy = boost::threadpool::wait_for_all_tasks]â

/usr/include/boost/./threadpool/size_policies.hpp:75: âstatic void boost::threadpool::static_size::init(Pool&, size_t) からインスタンス化 [with Pool = boost::threadpool::detail::pool_core] >、boost::threadpool::fifo_scheduler、boost::threadpool::static_size、boost::threadpool::resize_controller、boost::threadpool::wait_for_all_tasks>]â

/usr/include/boost/./threadpool/pool.hpp:103: âboost::threadpool::thread_pool::thread_pool(size_t) からインスタンス化 [with Task = boost::function0 >, SchedulingPolicy = boost::threadpool:: fifo_scheduler、SizePolicy = boost::threadpool::static_size、SizePolicyController = boost::threadpool::resize_controller、ShutdownPolicy = boost::threadpool::wait_for_all_tasks]â

./example/mergesort/mergesort.cpp:152: ここからインスタンス化

/usr/include/boost/./threadpool/./detail/locking_ptr.hpp:58: エラー: 「class boost::recursive_mutex」には「unlock」という名前のメンバーがありません

誰かがこの問題を解決するのを助けることができますか?

よろしく、 アナンダン

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

c# - コンパクトフレームワーク用のThreadPool.RegisterWaitForSingleObject?

プロジェクトをコンパクトフレームワークに移植する必要があります。そしてに変換することはできません

ThreadPool.RegisterWaitForSingleObject(WaitHandle、WaitOrTimerCallback、object、int、bool)

C#でのThreadPool.RegisterWaitForSingleObjectの代替方法は何でしょうか