問題タブ [worker]
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.
ruby-on-rails - iron_worker: Rails のアクティブなレコード クラスでの初期化されていない定数エラー
Heroku の Rails アプリでアクティブなレコード クラス名を認識できない鉄のワーカー (以前は単純なワーカー) をテストしています。クラス名である「AdImpression」は以下にあります。
Iron worker のサポート サイトのドキュメントには、アクティブなレコード オブジェクトを自由に使用できると書かれていますが、どういうわけか私には当てはまりません。
何か案が?
.net - .net4で複数のスレッドを同期する
背景:私はすでにスレッドシステムが設計されているアプリケーションに取り組んでいます。最適とは程遠いですが、現時点ではやり直せません。.netの新しいスレッド構造は使用せず、基本Thread
オブジェクトとスレッド処理ロジックをラップするオブジェクトのみを使用します。
一般的な設定は次のとおりです。(現在、2つのグループ、またはスレッドのカテゴリがあります)
ワーカースレッドを生成するメインアプリケーションスレッド(statthread main)。
ワーカースレッド。それぞれに
Thread
オブジェクトがあり、すべての処理を行う/スレッド間の境界などを処理するワーカーオブジェクトがあります。各スレッドはジョブを実行し、各ジョブには。がありJobTypeID
ます。
ワーカーを制御するための3番目のタイプのスレッドを導入する必要があります。これらの制御メッセージは、awcf Webサービスから送信されます(したがって、このスレッドは暗黙的に処理されます)。
制御メッセージは次のとおりです。{一時停止/再開、IDのリスト}
私の目標:
スレッドがジョブを処理している場合に、このスレッドのすべてのジョブを一時停止するようにというメッセージが表示されるように、これらのスレッドを同期するための最良の方法を見つけようとしていますJobTypeID
。履歴書が送信されるまでブロックする必要があります(そのIDの場合) )。ここでの落とし穴は、メッセージが送信された時点で、関連するジョブが処理されていない可能性があるため、すぐにアクションを実行する必要がないことです。また、ワーカーオブジェクトのリストがないため、単純に処理することはできません。各ワーカーを繰り返し処理し、if-matches-then-pauseを実行します。
実際の質問(一般化) 一連のワーカースレッド、スポナー/マネージャースレッド、および一連の制御スレッドを同期するために、皆さんは何をお勧めしますか?
私が試したこと
1つのアプローチは、ManualResetEvent
オブジェクトのコレクションを1つずつ格納JobTypeID
し、着信メッセージに従ってそれらに信号を送り、待機することです。このアプローチについてどう思いますか?プロセスに100以上の待機ハンドルがある場合のベストプラクティスまたはメモリ/処理コストに関する情報が見つかりません。
別のアプローチは、すべてのスレッドが待機する単一のオブジェクトを持ち、その同期されたコレクションがJobTypeIDs
待機することです。私はこのアプローチでいくつかの問題を抱えています。ManualResetEvent
つまり、1つのジョブIDを再開しても、他のジョブIDが待機している場合は、set(); reset();を実行する必要があります。これにより、いくつかの競合状態が発生します(WaitHandle.SignalAndWait(x、x)を実行しようとしても))最後に、Monitor.PulseAll()を使用して機能するソリューションを考え出しました。
たくさんのロックオブジェクトを備えたモニターを使用することもできます。これは、たくさんのウェイトハンドルよりも軽量であるように思われます。
また、長い質問とお読みいただきありがとうございます!
javascript - Firefox 拡張機能でワーカー スレッドからローカル ファイルを開くには、どのような方法が適していますか?
かなり遅い関数をメイン スレッドから移動しようとしていますが、再配置するコードは Components オブジェクトを使用して記述したモジュールに依存しています。私の理解では、コンポーネントはスレッド セーフがないため禁止されています。
私は MDN のドキュメントを整理するのに時間を費やしましたが、私の頭は泳いでいます。Firefox にはファイルを開くさまざまな方法があり、URI、ネイティブ パス、またはブラウザの奥深くにあるさらに複雑なインターフェイスから生成された任意の数の互換性のないオブジェクトをさまざまな方法で取得しているようで、それらがどのように相互運用されているかわかりません。または、これに適していると思われるもの。読めば読むほど、自分が何をしているのかわからなくなります。本当の答えは簡単だと思います。
A) ワーカー スレッド内から (ローカル) ファイルを開いても大丈夫ですか?
B) これの例を教えてください。
C) ...できれば、ネイティブ パスの代わりに URI を使用した例ですか?
D) ...できればインスタンス化してワーカーの外からオブジェクトを渡すことなく?
私は Perl の伝統を受け継いでwhile(<>) {}
おり、Firefox は、これまでに見た中で最も冗長/鈍い/恐ろしいシステムを持っているように見えます。
python - WSGI + Apache mpm-worker を使用した Python サブプロセス: IOError 4
ここで、ネットを検索しても解決策がわからないという奇妙な問題があります:/
Apache を mpm-prefork から mpm-worker に切り替えた後、(Django) Python WSGI アプリケーションでサブプロセスを使用すると、数時間ハングした後に次の例外が発生します。
問題の呼び出しは次のとおりです。
ここで、check_output は Python 2.7 からのこの関数のバックポートですが、Debian Squeeze リポジトリから Python 2.6 を使用しています。
実際、プロセスは実行されているように見えますが、終了します。
Apache の構成は、WSGIScriptAlias といくつかのディレクトリ ディレクティブを設定するだけです。
明らかなことを見逃していますか?
セバスチャンに挨拶
解決策: Debian 6 に同梱されている sudo 1.7.4-4のバグで あることが判明しました。ホームページから最新の 1.8.x .deb をインストールすることで解決しました。
instance - 複数の upstart インスタンスを自動的に起動する
PHP のギアマン ワーカーを使用して、さまざまなタスクを並行して実行します。すべてがうまく機能し、必要なときに起動するためのばかげた小さなシェル スクリプトがあります。プログラマーである (したがって怠け者である) ので、新興スクリプトを使用してこれらを起動できるかどうかを確認したかったのです。
インスタンススタンザの使い方がわかったので、インスタンス番号で開始できます。
そして、これはうまく機能し、次のように開始します。
これらのワーカーを使用したい方法は、いくつかのワーカー (コアごとに 1 つなど) を起動することであり、起動時にこれを実行したいと考えています。明確にするために、コアの数を検出するために upstart スクリプトは必要ありません。「8 つのインスタンスを実行する」とだけ言ってよろしいのですが、それが複数の実行が必要な理由です。これを自動的に行うために、upstart スクリプトで「start on」句を使用する方法はありますか?
たとえば、インスタンス 1、2、3、4 を開始しますか? 次に、シャットダウン時に適切に終了しますか?
これをinit.dスクリプトにフックできると思いますが、upstartがこのようなことを処理できるかどうか、または誰かがこの問題を理解しているかどうか疑問に思っていました.
乾杯!
c++ - システムがアクティブな場合に C++ をチェックインする方法は?
スクリーンセーバーが実行されているときなど、PC で人間の活動がないときにのみ実行する必要があるコードを書いています。Windows の下で C++ でこれを行う方法について何か提案はありますか?
@talnicolas、単に未使用のリソースを使用するために、コンピューターの電源を入れたまま別の場所にいる人は何人いますか?
javascript - Web Worker onmessage コールバックで postMessage を呼び出すと、SYNTAX_ERR: DOM Exception 12 がスローされる
Web Worker の onmessage コールバックを記述しているときに、別の postMessage() を送信しようとすると、コンソールに「Uncaught Error: SYNTAX_ERR: DOM Exception 12」が表示されます。
javascript - NodeJS でワーカー プロセスを作成および管理する方法は?
たとえば、ユーザーがオーディオ ファイルの処理を要求した場合、もちろん nodejs は負荷の高い処理を実行できないため、ワーカー プロセスにオフロードする必要があります。
これらのワーカーは、おそらくイベントに発行/サブスクライブできる必要があり、死ぬと再生成され、キューは負荷分散し、キャッシュを維持し、存続できる必要があります。私は 0MQ を見たことがあり、他の人もそれを気に入っていますが、それを Web アプリに統合する方法がわかりません...
これらのワーカー プロセスを作成および管理する業界標準の方法は何ですか? そして、使用されるツールは何ですか?
編集:もう1つ:オーディオ処理に時間がかかり、リクエストがタイムアウトするとします。タイムアウトを増やす以外にそれを回避する方法はありますか?
編集 2: ワーカーとは、Heroku ワーカー dyno のようなものです。どのように機能しますか?
ruby - Resque-Workerで引数としてオブジェクトを渡す
Resque-workersで引数値としてオブジェクトを渡す方法はありますか?
IDを持たない別の種類のオブジェクトResque.enqueue(SomeWorker, obj)
の代わりに、このようなことをしたいと思います。Resque.enqueue(SomeWorker, id)
助けに感謝します。
scheduled-tasks - 最小負荷スケジューラ
私は、数百のワーカーを並行して使用するシステムに取り組んでいます (小さなタスクを評価する物理デバイス)。一部のワーカーは他のワーカーよりも高速であるため、事前に速度を知らなくてもタスクの負荷を分散する最も簡単な方法を考えていました。
ワーカーが現在取り組んでいるタスクの数を単純なカウンターで追跡し、リストを並べ替えて、アクティブなタスク数が最も少ないワーカーを取得することを考えていました。このようにして、遅いワーカーはいくつかのタスクを取得しますが、システム全体を遅くすることはありません. 私が質問している理由は、現在のラウンド ロビン方式では、タスクを蓄積し続けて新しいタスクをブロックし続ける非常に遅いワーカー (他のワーカーよりも 100 倍遅い) が滞っているからです。
現在アクティブなタスクの数に従ってリストをソートするのは簡単なことですが、リストを1秒間に数回ソートすることになるため(タスクあたりの平均作業時間は25ミリ秒未満です)、これが大きなボトルネックになるのではないかと心配しています. 何度も何度も並べ替えることなく、タスク数が最も少ないワーカーを取得する簡単なバージョンがあります。
EDIT : タスクは、開いている TCP 接続を介してワーカーにプッシュされます。タスク間の依存関係はかなり複雑 (排他的なリソース使用) であるため、すべてのタスクが最初から割り当てられているとしましょう。タスクがワーカーから戻るとすぐに、ブロックされていないすべてのタスクがキューに入れられ、新しいタスクがワーカーにプッシュされます。ワーク キューが空になることはありません。