問題タブ [parallel.foreach]

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

c# - Parallel.ForEach どの項目でどのように知るのですか? - どのループ?

これで問題なく動作します。私が知りたいのは、現在どの反復にいるのかをどのように知ることができるかということです。つまり、私のリストに 100000 個の URL があるとしましょう。それらを取得し始めます。しかし、現在どの URL が取得されているかを画面に出力したいとも考えています。

どうやってやるの?指定されたリストのどの項目で現在ループしているかを知るにはどうすればよいですか?

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

c# - バックグラウンド ワーカーと Parallel.For Null 例外

(画像から) ピクセル値リーダーを最適化しようとしており、Parallel.For をバックグラウンド ワーカーと共に使用してバーに進行状況を表示しようとしました。ディクショナリを使用して、他の処理に使用する読み取り値を保存しています。Parallel.For のみを使用すると、完璧に動作し、時間は分以下になります。バックグラウンド ワーカーと Parallel.For を使用すると、辞書に値を追加しようとした時点で null 例外メッセージが表示されます。

C# .Net 4 を使用しています。

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

.net - 並列クラスと CPU

私はウィンアプリを持っています。.Net Parallel Class を使用して、サービスへの数百万回の呼び出しを開始します。アプリとサービスが同じサーバー (8cpu、iis 7.5) にある場合、プロセスは非常に高速で、IIS (作業プロセス リスト) に 30 ~ 40 のスレッドがあり、多くのアクティブな要求が表示されます。しかし、アプリとサービスが異なるサーバー (4cpu と 8cpu) にある場合、プロセスが遅くなり、作業中のプロセスのみが表示されます。また、パフォーマンス カウンター モニターに 2 つのアクティブな要求が表示されます。

通信の問題ではなく、CPUの問題のようです。アプリをサービスにまとめずに、どうすれば同じ時間を取得できますか?

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

c# - Parallel.ForEach と MatchCollection

まず、これがこの質問の複製であることは知っていますが、そこにリストされている解決策をうまく機能させることができません。MatchCollection は IEnumerable Parallel.ForEach の使用を実装していないため、OfType() が必要であることを理解しています...私が間違っていることは何ですか? これが私のセットアップです:

そして、ここに私が得るコンパイルエラーがあります:

0 投票する
0 に答える
670 参照

c# - C# Parallel.For でのローカル変数の使用

私は Parallel.For を使用するのが初めてで、次のことにこだわっています。

For ループ内では、反復ごとに特定の固定数 (nStages) ずつ増やす必要があるポインター オフセット (iPathMatrixOffset) を使用します。基本的に、反復後、そのオフセットは r * nStages の値になります。

現在、この変数をループ内で宣言し、r*nStages に設定しています。

これは最も効率的な方法ではないと思います-これはパフォーマンスが重要なコードです(そのため、ここでポインターベースのコードを使用しています)-各反復の最後にnStagesでインクリメントする方が速いかどうかを試してみたい.

しかし、スレッドのみにローカルな変数を宣言する方法がわかりません.MSDNからそれを理解することはできません.

これはよくある質問に違いありません...確かに私は明らかなことを見落としています。

助けていただければ幸いです。

現在のコード:

次のようなことをしたい:

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

.net - これは Parallel.ForEach にとって安全ですか?

解析のためにメールをプルするサービスがあります。各電子メールは複数の訪問者によって解析されます (すべてIEmailVisitorが 1 つのメソッドを持つ単純なインターフェースを実装していvoid Visit(VisitableEmail email)ます:

サービスには、IList<IEmailVisitor>起動時に一度作成され、次の方法でタイマー イベントで再利用される があります。

Email クラスには次のメソッドがあります。public void Accept(IEmailVisitor visitor) { visitor.Visit(this);}各訪問者が訪問されると、電子メール インスタンス自体のプロパティが設定 (または変更) されます。

処理する電子メールがかなりの数になる可能性があります。私の質問は、上記のコードを次のように安全に変換できるかどうかです。

の呼び出し間で状態を維持する訪問者はいませんVisit(this)。この質問は、タスクの並列処理に関する私のかなり表面的な知識を反映していると確信していますが、私が行ってきた読書にもかかわらず、これが安全なアプローチであるかどうかはわかりません (操作を正当化するのに十分な電子メールが毎回あると仮定して)。