問題タブ [worker-thread]

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

multithreading - ワーカー スレッドの使用率を最大化する

問題を解決するために (そしてマルチタスクの理解を深めるために)、小さなスレッド プールの実装を作成しました。このスレッド プールは、スレッド プールのクライアントによってタスクが追加されると、キューからタスクをポップする多数のワーカー スレッドを起動します。この質問の目的のために、タスク キューが空の場合、ワーカー スレッドはすべて終了します。

いくつかの基本的なベンチマークを行った後、アプリケーションがキュー ロックの取得を待機するために最大 60% の時間を費やしていることを発見しました。おそらく、これは主にワーカー スレッド内で行われています。

これは、ワーカー スレッドに十分な処理を与えていないことを示しているにすぎないのでしょうか。ワーカースレッドのスループットを向上させるために欠けている可能性のある簡単なものはありますか?

編集:これは、物事をある程度説明するための大まかな擬似コードです。これらは、ワーカー スレッドの実行中にロックが取得/解放される唯一の 2 つの場所です (アプリケーションの実行時間の大部分です)。

0 投票する
5 に答える
8106 参照

php - ワーカーモードの php では 403 禁止されています。ブラウザからphpファイルのみ

最初に、はい、私はこれをグーグルで検索し、具体的にはスタックオーバーフローで検索したと言って始めましょう。多くの答えを見つけて、すべて試しました。この時点で、私の唯一のリソースは自分で質問を投稿することだと思います。たとえシナリオが繰り返されているように聞こえても、親切に助けてください.

状況は非常に基本的なもので、Ubuntu デスクトップ 10.04 では、このガイドとそのスピンオフhere に従って、Synaptic と Php5 を介して apache をセットアップしました。この時点で、コマンド ラインで php スクリプトを呼び出すと、次のように機能します。

my hello world を問題なく出力します。しかし、firefox にアクセスして test.php を指定すると、403 エラー Forbidden が表示されます...

/var/、/var/www/、および /var/www/test.php の所有権を、考えられるすべての変数に変更しました (www-data [このユーザーとして apache を実行]、purefan [通常のユーザー]、root )違いはありません。許可を数回変更しました777、0777(念のため)、644、755、変更なし。CLI から phpinfo をファイルに取得し、ここに追加しました。

http://localhost/index.phpにアクセスすると、Apache のデフォルトの "It Works!" が表示されます。しかし、そのファイルにphpコンテンツを追加すると、単に無視され、エラーは表示されません(エラーログとsyslogもチェックしました)。

ですから、何か提案があれば教えてください。これは生死の問題ではありませんが、プリフォークの代わりにワーカーを使用してセットアップしたいと考えています。

お時間をいただきありがとうございます

0 投票する
4 に答える
1364 参照

c# - C# での基本的なマルチスレッドに関する質問

私はマルチスレッドが初めてで、アプリケーションの領域を並列化することに取り組んでいます。私はこのサイトで多くの投稿を読みましたが、私の問題に取り組む最善の方法についてまだ混乱しています:

[1] .NET 3.5 ではThreadPool、プログラムがマシンのマルチコアを活用する唯一の方法はありますか? つまり、を使用して異なるコアでスレッドを生成することは可能new Thread()ですか?

[2] 私の場合:List<Calculation>約 80 個のアイテムが含まれており、現在順次処理されています。したがって、私が.NET 3.5を使用していて、私が読んだことに基づいていることを考えるとThreadPool、スレッド数が多いため、おそらくマルチスレッドの最善の策です。

  • 計算の間には多くの依存関係があります。現在、リストは、必要なすべての計算が最初に実行されるように並べられています。

これは、作業項目の依存関係がどのように見えるかです (詳細は重要ではなく、依存関係の複雑さを指摘したかっただけです):

代替テキスト

  • 計算時間は大きく異なります.1つのCalculationオブジェクトは値の取得のみを伴う場合があり、他のCalculationオブジェクトはネストされたループで多くの作業を伴う場合があります...など

Calculationsそれに依存する10以上の他の作業項目のようなものを持つメインに優先順位を付けるにはどうすればよいですか? 使用するシグナリングの最も効率的な方法は何ですか?

ありがとうございました。

List<Calculation>編集:修正されたままであることを言及する必要があります。ただし、80回以上の計算を計算すると、x百万回と呼ばれます。イテレータが更新されるたびCalculationに、リスト内のすべてで Calculate() が呼び出されます。

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

scala - Scala、アクターが終了したかどうかを確認します

Scala 2.8 では、アクターを起動すると、メッセージ パッシングを介して通信できます。これは、最終的な Exit() メッセージ、または自分のプロトコルに合うと判断したものを送信できることを意味します。

しかし、アクターが終了したかどうかを確認するにはどうすればよいでしょうか? マスター アクターがいくつかのワーカー アクターを開始し、それが最終的な回答であるかどうか (つまり、アクターがまだ動作しているか、またはすべて終了したか) を確認するたびに、単純に回答を待つというタスクを自分が持っていることは容易に想像できます。

もちろん、「完了しました」というメッセージを全員に送り返してからカウントすることもできますが、これではどうにもなりません。

worker-actor の完了をテストする際のベスト プラクティスは何ですか?

編集#1

Futures を検討していますが、問題があります。誰かがこのコードが機能しない理由を説明できますか:

関数 fib を future-body 内で定義すると機能します。それはスコープの問題であるに違いありませんが、上記でエラーは発生せず、単にハングします。誰?

編集#2

Application を拡張するのは良い方法ではなかったようです。main メソッドを定義すると、すべてが機能しました。以下のコードは私が探していたものなので、Futuresは高く評価します :)

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

c++ - IOCP を使用してユーザー定義データをワーカー スレッドに渡す方法は?

ちょっと... I/O 完了ポートと winsock を使用して小さなテスト サーバーを作成しました。ソケットハンドルを完了ポートに正常に接続して関連付けることができます。しかし、ユーザー定義のデータ構造をワーカースレッドに渡す方法がわかりません...

私がこれまでに試した(ULONG_PTR)&structure asのは、の関連付け呼び出しで完了キーとしてユーザー構造を渡すCreateIoCompletionPort() ことでしたが、うまくいきませんでした。

ここで説明されているように、独自の OVERLAPPED 構造を定義し、CONTAINING_RECORD() を使用してみましたhttp://msdn.microsoft.com/en-us/magazine/cc302334.aspxおよびhttp://msdn.microsoft.com/en-us /magazine/bb985148.aspx . しかし、それもうまくいきません。(pHelper の内容に奇妙な値が表示されます)

私の質問は次のとおりです: WSARecv()、GetQueuedCompletionStatus() および Completion パケットまたは OVERLAPPED-strucutre を使用してワーカー スレッドにデータを渡すにはどうすればよいですか?

編集:「接続ごとのデータ」を正常に送信するにはどうすればよいですか?... (上記の 2 つのリンクで説明されているように) それを行う技術が間違っているようです。

ここに私のコードがあります:(はい、それは醜い唯一のテストコードです)

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

javascript - HTML5ワーカースレッド機能は、マシン上のコアの数を公開しますか?

HTML5ワーカースレッドで遊んでいて、利用可能なコアに応じていくつかの作業を分割したいと思います。JavaScriptからマシン上のコアの数を取得する方法はありますか?

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

java - 読み込みアクティビティのスレッドを処理するためのベストプラクティス

ワーカースレッドがゲームをロードしているときにロード画面を表示するアクティビティがあります。ワーカースレッドの読み込み中に、アクティビティのテキストビューが更新され、現在のステータスが表示されます。終了すると、読み込みアクティビティが閉じられ、実際のゲームアクティビティが開始されます。ワーカースレッドはonCreate()メソッドで作成され、新しく作成されたハンドラーが与えられます。

ただし、方向の変更などによってアクティビティが破棄されて再開されるとどうなりますか?私見では、onCreate()メソッドは、最初のスレッドがまだロードされている間に新しいワーカースレッドを作成するため、複数のワーカースレッドが同じことを実行するようになりました。

これを防ぎ、新しいアクティビティについてワーカースレッドに通知する(ステータスの更新を投稿できるようにする)ための最良の方法は何ですか。

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

java - ワーカースレッドの使用中にステートメントを返す

Swingのワーカースレッドを使用して何かを返す必要がありますか?戻り値がない場合はどうなりますか?ワーカースレッドを使用して無限ループを実行したいだけです...では、何を返すのでしょうか?そして、無限ループの後にダミーのreturnステートメントを書いたとしても、たとえばreturn 0; 次に、おそらく「コードに到達できません」と表示されます。

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

android - Android: PacketListener ワーカー スレッド内から ArrayAdapter / ListView を更新する

Android アプリケーション用の XMPP クライアントを実装しています。私に送信されたチャット メッセージを取得するために、Smack の PacketListener を使用しています。アプリケーションの XMPP 部分では、すべて正常に動作します。メッセージを送受信できます。しかし、受信したメッセージの表示に問題があります。

メッセージを表示するために、アプリケーションはメッセージを ListView にバインドする ArrayAdapter を使用します。私が送信したメッセージは問題なく表示されるため、アダプタ自体は正常に動作します。しかし、受信したメッセージはそうではありません。UI との対話が発生した場合にのみ表示されます。どうやら、これはスレッドの問題です。

Javadoc とデバッガーが教えてくれたことに間違いがなければ、Pac​​ketListener.processPacket() メソッドは独自のスレッドで実行され、ListView の更新は、ハンドラーが次に行うべきことがあり、したがって処理する場合にのみ実行されます。それ。私の質問は、ハンドラーにすぐに処理するように指示するにはどうすればよいですか? ここで、このワーカー スレッドとメイン スレッド間の通信はどのように機能するのでしょうか? Runnable を自分で作成していないため、これを処理する方法がわかりません。

コードは次のとおりです。

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

c++ - Qt GUIアプリケーションのワーカースレッドでOpenGLを使用してテクスチャを安全にバインドする方法はありますか?

私は現在、Qtを使用して3Dシーンを視覚化するためのGUIソフトウェアプロジェクトに取り組んでいます。GUIを使用すると、ユーザーは、.mtlをサポートする.objや.stlなどの3Dデータファイルのバッチと、QGLWidgetから派生したウィジェットでレンダリングされるSceneObjectクラスのオブジェクトとして2D画像ファイルをシーンにロードできます。

ただし、メインGUIスレッドにバッチでロードすると、ロード時間が長くなるとGUIがフリーズし、見苦しくなります。別のスレッドでロードを実行しようとしましたが、大きな問題が1つあります。.objテクスチャまたは画像ファイルをロードする場合、各画像またはテクスチャをロードした直後にOpenGL glBindtexture()を使用してバインドも実行するため、保存するだけで済みます。各SceneObjectインスタンスのテクスチャID。ワーカースレッドでロードを実行しようとすると、プログラム全体がクラッシュしました。

各スレッドは1つのOGLコンテキストにしかアクセスできず、スレッド間のコンテキスト切り替えは、私がやりたかったことを達成するための1つの危険な方法であることを読みました。別の可能な方法は、ロードが完了した後にGUIスレッドでテクスチャバインディングを実行することですが、それは私のSceneObjectクラスで完全な再設計を意味します:(

アセットをOpenGLシーンにロードするためのロードスレッドを実装する方法について誰かにアドバイスをいただけますか?