問題タブ [parallel-extensions]
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.
.net - その辞書の列挙ループ内から ConcurrentDictionary から項目を削除できますか?
たとえば、次のようになります。
通常の Dictionary<K,V> では明らかに例外がスローされます。項目を削除すると、列挙の存続期間中に辞書の内部状態が変更されるためです。提供された IEnumerable が内部状態の変化を処理するため、これは ConcurrentDictionary の場合ではないことを理解しています。私はこれを正しく理解していますか?使用するより良いパターンはありますか?
.net-3.5 - Parallel Extensions の動作が遅い理由
Parallel Extensions を使用して計算アプリケーションを高速化しようとしています。私はそれに慣れていないので、メインの foreach ループを Parallel.ForEach に置き換えました。しかし、計算はより遅くなりました。並列拡張のパフォーマンスが低下する一般的な理由は何ですか?
ありがとう
.net - Parallel:オブジェクトのリストに対して同じメソッドを呼び出します
MyMethodメソッドを持つMyClassクラスがあります。MyClassインスタンスのリスト内のすべてのMyClassインスタンスについて、MyMethodを呼び出して、それらを別々のスレッドで実行させたいと思います。.NET4.0とParallel拡張機能を使用しています。
.net - ThreadStatic 属性で並列拡張機能を使用します。それはメモリをリークする可能性がありますか?
私は Parallel Extensions をかなり頻繁に使用していますが、ワーカー スレッドによるオブジェクトの再利用を可能にするために、スレッド ローカル ストレージを使用することが適切なケースに遭遇しました。そのため、スレッドごとに一意の値を持つ静的フィールド/変数をマークする ThreadStatic 属性を見ていました。
PE によるスレッドの再利用を保証せずに、ThreadStatic 属性を指定して PE を使用するのは賢明ではないように思えます。つまり、スレッドがある程度作成および破棄された場合、変数 (およびそれらが指すオブジェクト) は不確定な時間スレッドローカルストレージに残り、メモリリークが発生しますか? それとも、スレッドストレージはスレッドに関連付けられており、スレッドが破棄されるときに破棄されますか? しかし、プール内に、スレッドが使用されるコードのさまざまな部分からスレッド ローカル ストレージを蓄積する、長く存続しているスレッドが潜在的に存在する可能性があります。
PE でスレッド ローカル ストレージを取得するためのより良い方法はありますか?
ありがとうございました。
c# - 多次元配列で Parallel.ForEach を呼び出す方法
Parallel.ForEach
文字列の 2D 配列でを呼び出す方法を理解するのに少し苦労しています。
タイプを明示的に指定しないと、次のエラーが発生します。
メソッド 'System.Threading.Tasks.Parallel.ForEach(System.Collections.Generic.IEnumerable, System.Action)' の型引数は、使用法から推測できません。型引数を明示的に指定してみてください。
型引数を明示的に指定する適切な方法は何ですか?
c# - Parallel.ForEachを使用して最小値から最小値を選択する
私はParallel.ForEach
一般的にC#、、、および.NETを初めて使用します。何千もの場所を含む検索を並列化したい。場所ごとに、大圏距離を計算します。それは私がさまざまなコアに広げたい計算です。私の質問は、このMSDN TPLの例のように、スレッドローカル変数が1つしかない場合、どうすればよいですか?結果として、私は、、、、、、およびそのオプションを確認しましたが、同等性を追加、インクリメント、デクリメント、またはテストしているだけではありません。並行して実行されている複数のスレッドで、全体的に最も短いオブジェクトを返したいInterlocked
Add
CompareExchange
Decrement
Exchange
Increment
Read
距離。私の腸は、これは簡単で、距離をラップする小さなオブジェクトを作成できるはずだと言っていますがLocation
、各スレッドから最良の答えを取得して、それらの中から最短距離を選択するにはどうすればよいですか?非並列バージョンは次のとおりです。
良いアドバイスを提供しているように見えるDDJブログ投稿を見ましたが、それが最良のアドバイスであるかどうか疑問に思いました。著者が配列をループしているのを見て、これを行うためのより機能的な方法はないのだろうかと思います。機能の世界では、、、を使用しmap
ます。lambda
min
unit-testing - 並行ソフトウェアの単体テスト - 何をしますか?
ソフトウェアがますます並行的になるにつれて、単体テストで型のコア動作をテストするにはどうすればよいでしょうか(並列動作ではなく、コア動作のみ)。
古き良き時代には、型があり、それを呼び出し、それが返すものやその他の呼び出しをチェックしていました。
今日では、メソッドを呼び出すと、実際の作業は次に利用可能なスレッドで実行されるようにスケジュールされます。それが実際にいつ開始され、他のものを呼び出すかはわかりません。さらに、それらの他のものも同時に発生する可能性があります。
これにどのように対処しますか?コンカレント スケジューラを抽象化/注入しますか (たとえば、タスク並列ライブラリを抽象化し、単体テストでフェイク/モックを提供しますか)?
役に立ったリソースは何ですか?
編集
タイプの通常の動作のテストを強調するように質問を編集しました(TPLなど、マルチコアを利用するために使用される並列メカニズムは無視します)
c# - (Fluent) Nhibernate の遅延読み込みと Parallel.ForEach への影響
FetchMode.Eager
(データベースから) インスタンスを要求するときに、構文を使用して子エンティティを積極的にロードするように、FNH を介して構成されたいくつかのエンティティがあります。今、私はこれがマッピングの遅延読み込みを無視し、子エンティティに「実際の」データを入力するという印象を受けました。
これを行う理由は、を使用してエンティティのコレクションを反復処理し、一連の結果を生成したいからですParallel.ForEach
が、次のエラーが発生します。
「NHibernateUtil.Initialize」を使用してすべての子エンティティを初期化すると、期待どおりに機能します。
の使用における私の理解は間違っていますFetchMode.Eager
か?
.net - c# 4.0 Parallel.For に必要な特別な参照はありますか?
私はこの記事に従っています: http://blogs.msdn.com/b/csharpfaq/archive/2010/06/01/parallel-programming-in-net-framework-4-getting-started.aspx
私のコンソールアプリではParallel名前空間が表示されますが、「Parallel.For」は「名前空間Forのタイプが名前空間 'Parallel'に存在しません」でコンパイルに失敗します。
私はネットを精査しましたが、追加した名前空間であるSystem.Threadingにある以外は何も見ていません(ただし、アセンブリ参照ではなく、.Netフレームワーク参照リストには表示されません) .
vs2010プロジェクトを使用すると、フレームワーク4.0が使用されます。
ここに私の使用法があります:
問題のあるコード:
c# - 平行・割り込み用
1000 個のランダムな整数の配列があり、たとえば 68 を見つけるためにループする必要があるとします。
クアッド コア CPU で新しい Parallel.For を使用すると、速度が大幅に向上し、各コアは 250 個の配列アイテムしか動作しません。
問題は、次の条件が満たされたときに Parallel.For ループを中断できるかどうかです。
ありがとう。