問題タブ [task-parallel-library]
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.
c# - マルチスレッドWindowsサービス用のスレッドライブラリ
Windowsサービスで使用でき、必要なすべてのマルチスレッド機能を処理できる、できればC#の優れたライブラリを探しています。
サービスはx分ごとに実行され、呼び出すプロセスがないかデータベースをチェックし、各プロセスに対してスレッドを生成して実行します。
各スレッドは、例外やロギングなどを処理する必要があります。
助言がありますか?
php - eval()を使用した基本的なPHPテンプレートのエラー
泣く準備ができました。私はphp.netのマニュアルページを読み、さまざまなフレーズで12回のGoogle検索を試し、何百ものstackoverflowスレッドをスキャンしました。この方法が使用されているのを見たことがありますが、うまくいきません。それはとても基本的なようです。答えを見つける方法がわからない、いくつかの関連する質問や問題があります。
PHPファイルの重要な部分は次のようになります。
私のindex.tplファイルには、次のような行が含まれています。
<title>{$tpl['title']}</title>
<meta name="description" content="{$tpl['description']}" />
nav, etc…<br>
<div id="main-content"> {$tpl['page-content']} </div>
余分なものをたくさん使わずに、コードがいかにすっきりときれいであるかが好き<?=…?>
です。
まず、中括弧{}が文字列に表示される場合、それは何と呼ばれますか?知っていれば調べて使い方を学べるかもしれません。
次に、これはまったく機能しません。変数キーから一重引用符を削除するのは良いことですが、php.netは、ある時点で私の名前が言語定数になった場合に備えて、絶対に削除しないように指示しています。けっこうだ。しかし、どうすればこれを修正できますか?evalTemplateサブルーチンを作成し、それに$ tplを渡すことができる場合に備えて、varsに配列を使用するのが好きです。
最後に、$tpl['page-content']は出力されません。変数は正常に設定されています。テストに使用できますecho $tpl['page-content']
が、最終的なHTMLでは1行の空白行として表示されます。
私がまだ知らない言語のいくつかの側面があると確信しています。どんな助けでも大歓迎です!!
system.reactive - Reactive Framework、PLINQ、TPL、Parallel Extensionsはどのように相互に関連していますか?
少なくとも.NET4.0のリリース以来、Microsoftは並列および非同期プログラミングのサポートに多大な努力を払ってきたようであり、これに関連する多くのAPIとライブラリが出現したようです。特に、最近は次のような派手な名前がどこでも絶えず言及されています。
- リアクティブフレームワーク、
- PLINQ(Parallel LINQ)、
- TPL(タスク並列ライブラリ)と
- 並列拡張。
現在、これらはすべてMicrosoft製品のようであり、.NETの非同期または並列プログラミングシナリオを対象としているようです。しかし、それらのそれぞれが実際に何であるか、そしてそれらが互いにどのように関連しているかは完全には明らかではありません。いくつかは実際には同じものかもしれません。
一言で言えば、誰もが何が何であるかについて記録を立てることができますか?
c# - タスク並列ライブラリの設計を開始するのは時期尚早ですか?
マイクロソフトが最初に発表して以来、私は.NETタスク並列ライブラリ(TPL)の開発に大きな関心を持って取り組んできました。
最終的にはTPLを活用することは間違いありません。私が質問しているのは、Visual Studio2010と.NET4.0がリリースされたときにTPLを利用し始めるのが理にかなっているのか、それとももう少し待つのが理にかなっているのかということです。
なぜ今すぐ始めるのですか?
- .NET 4.0タスク並列ライブラリは適切に設計されているようであり、いくつかの比較的単純なテストは、それが今日のマルチコアCPUで適切に機能することを示しています。
- 約7年前に最初のクアッドプロセッサDellPoweredge6400を購入して以来、複数の軽量スレッドを使用してソフトウェアを高速化することの潜在的な利点に非常に興味を持っています。当時の実験では、努力する価値がないことが示されました。これは主に、各CPUのキャッシュ(当時は共有キャッシュがありませんでした)とRAMの間でデータを移動するオーバーヘッドに起因していました。
- 競争上の優位性-一部のお客様は十分なパフォーマンスを得ることができず、今日TPLを使用してより高速な製品を構築できることは間違いありません。
- 楽しそうですね。はい、一部の開発者は鋭い棒で目を突くほうがいいと思いますが、パフォーマンスを最大化することを本当に楽しんでいます。
なぜ待つのですか?
- 今日のIntelNehalemCPUは、マルチコアサポートが成熟するにつれて私たちがどこに向かっているのかを表していますか?現在、単一のレベル3キャッシュを共有する4コアのNehalem CPUを購入できます。また、Visual Studio 2010 / .NET 4.0がリリースされるまでに、単一のレベル3キャッシュを共有する6コアCPUを購入できる可能性があります。明らかに、コアの数は時間の経過とともに増加しますが、アーキテクチャについてはどうでしょうか。コアの数が増えても、それらは引き続きキャッシュを共有しますか?Nehalemの問題の1つは、コア間に非常に高速な相互接続があるにもかかわらず、コアに不均一なメモリアクセス(NUMA)があるため、パフォーマンスが低下し、結果が予測しにくくなる可能性があるという事実です。将来のマルチコアアーキテクチャはNUMAを廃止できるでしょうか?
- 同様に、.NETタスク並列ライブラリは成熟するにつれて変更され、それを十分に活用するにはコードを変更する必要がありますか?
制限事項
- コアエンジンは100%C#であり、完全な信頼なしで実行する必要があるため、.NETAPIの使用に制限されています。
.net-4.0 - Parallel.ForEach には AsParallel() が必要ですか
ParallelEnumerable
には静的メンバーがありAsParallel
ます。があり、IEnumerable<T>
使用したい場合Parallel.ForEach
、それは常に使用する必要があることを意味しAsParallel
ますか?
例: これらはどちらも正しいですか (他のすべてが等しい)?
なしAsParallel
:
またはAsParallel
?
c# - TPL を使用してシングル コンシューマ キューを作成する方法 (および場合) は?
最近、.NET 4.0 の TPL に関するポッドキャストをたくさん耳にしました。それらのほとんどは、作業が GUI スレッドに干渉しないようにタスクを使用して、画像のダウンロードや計算の実行などのバックグラウンド アクティビティについて説明しています。
私が取り組んでいるコードのほとんどは、複数のソースからの作業項目をキューに入れ、順番に処理する必要がある、複数のプロデューサー/単一のコンシューマーのフレーバーを持っています。1 つの例は、ファイルまたはデータベースへの最終的な書き込みのために、複数のスレッドからのログ行が 1 つのキューに順番に並べられるロギングです。単一のソースからのすべてのレコードは順序どおりに維持する必要があり、同じ時点からのレコードは、最終的な出力で互いに「近い」必要があります。
したがって、複数のスレッドまたはタスク、またはすべてがキューラーを呼び出しています。
専用のワーカー スレッドがキューを処理します。
これらのタスクのコンシューマー側専用のワーカー スレッドを用意することは、常に合理的であるように思われます。代わりに、TPL の構造を使用して将来のプログラムを作成する必要がありますか? どれ?なんで?
c# - TPL とリアクティブ フレームワーク
Rx over TPL の使用を選択するのはいつですか? または 2 つのフレームワークは直交していますか?
私が理解していることから、Rxは主にイベントの抽象化を提供し、構成を可能にすることを目的としていますが、非同期操作の抽象化も可能にします。Createxx オーバーロードと Fromxxx オーバーロードを使用し、返された IDisposable を破棄してキャンセルします。
TPL は、タスクおよびキャンセル機能を介して操作の抽象化も提供します。
私のジレンマは、いつ、どのようなシナリオで、どれを使用するかということです。
c# - MSDN TPLからの例外の処理例-これは競合状態ですか?
MSDN@のTPL例外処理の例を見ています。
http://msdn.microsoft.com/en-us/library/dd537614(v=VS.100).aspx
コードの基本的な形式は次のとおりです。
私の質問は:これは競合状態ですか?tryが実行される前にtask1がスローされた場合はどうなりますか?これがレースになるのを止める何かが欠けていますか?
代わりに次のように書くべきではありません:
.net - .NET 4 TPL でデッドロックされたタスクを強制終了する
Task Parallel Libraryの使用を開始したいと思います。これは、非同期操作を実行するために今後推奨されるフレームワークです。私が見つけることができなかったものの 1 つは、Thread.Abort が提供するものなど、強制的な中止の手段です。
私が特に懸念しているのは、完全に信頼したくないコードを実行するタスクをスケジュールすることです。特に、この信頼できないコードがデッドロックしないと確信できないため、このコードを使用してスケジュールしたタスクが完了するかどうか確信が持てません。(マーシャリングのオーバーヘッドと複雑さのため) 真の AppDomain 分離から離れたいと思っていますが、Task スレッドをデッドロックしたままにしたくありません。TPLでこれを行う方法はありますか?
.net - Task Parallel Library を使用しているときに未処理の例外をすべて処理するにはどうすればよいですか?
.NET 4.0 でTPL ( Task Parallel Library ) を使用しています。Thread.GetDomain().UnhandledException
イベントを使用して、未処理のすべての例外の処理ロジックを一元化したいと考えています。ただし、私のアプリケーションでは、TPL コードで開始されたスレッドに対してイベントが発生することはありませんTask.Factory.StartNew(...)
。のようなものを使用すると、実際にイベントが発生しnew Thread(threadStart).Start()
ます。
この MSDN の記事では、TPL を使用するときに Task.Wait() を使用してキャッチすることを提案していますAggregateException
が、このメカニズムは十分に「集中化」されていないため、これは私が望んでいることではありません。
誰かがまったく同じ問題を経験していますか、それとも私だけですか? これに対する解決策はありますか?