.NETの軽量スレッドプールライブラリ

.net http multithreading

私は.NETでスレッドプールライブラリを探しています

  • 私は約100.000のタスクをプッシュすることができるはずなので、「ブロック」のサポートを提供するべきです。 (明らかに、一度にたくさんのタスクをプッシュすることはできません。新しいタスクを追加している間はブロッキングをサポートし、新しいスロットが利用可能になるまでスレッドをブロックするべきです)

  • 過度に複雑ではない

  • それほど高価ではない(メモリ – CPUに関して)

  • フリー/オープンソース(商用向けライセンス)

私はすでにこれらすべてをサポートする独自の解決策を持っていますが、それが最良の実装かどうかはよくわかりません。 それで、私は他の図書館を調べたいです。

これは主にHTTPリクエストに使用されるので、CPUの応答が少なくなります。 つまり、100の同時スレッドが許容されるということです。

  6  2


ベストアンサー

私が最近見た中で最高のものは、Jeffery Richterの PowerThreadingライブラリです。 また、 このチャンネル9のビデオをご覧ください。

PowerThreadingライブラリの優れた点は、1つのスレッドを多数の要求で共有できるようにすることでThreadPoolを効率的に使用できることです。

3


2


http://code.google.com/p/retlang/[Retlang]大活躍! Ayendeの http://ayende.com/Blog/archive/2008/08/01/Rhino-Queues.aspx[Rhino Queues]から。

2


Microsoftの CCRを調べてください。 それは非常に効率的なスレッドプールを持ち、多くの優れた非同期I / O要求を扱うことを簡単にするプリミティブを持っています。

そのモデルの下では、あなたのI / Oが本当に非同期であるとすれば、あなたが必要とするスレッドの数はあなたの箱のコアの数と正確に同じになるでしょう。 それ以上は無駄です。

2


タスクが多い場合は、http://en.wikipedia.org/wiki/Enterprise_service_bus [service bus]またはBizTalkなどのサードパーティ製ミドルウェアプラットフォームの実装を検討してください。 それが多すぎる場合は、そのまま メッセージキューをクリックしてください。

また、SQL Serverがあり、キューをより簡単にバックアップおよび管理したい場合は、 SQL Serverサービスを検討してください。ブローカ]。

1


私はあなたと同じ必要性がありました、しかし私の質問は非常に似たような答えを達成するために異なる方法で言いました:https://stackoverflow.com/questions/484511/is-there-any-way-for-executing-a-method-接続を複数回管理する[メソッドを複数回実行するが、接続/スレッドを管理する方法はありますか? (。ネット)]

1


Net 4.0 is adding the Task Parallel Library which will have direct

これをサポートします。 あなたがそれに気付いていないのであれば、それは.Net 3.5をベースにしたスタンドアロンCTPとしても、昨年秋に公開されたVisual Studio 2010 CTPの一部としても利用可能です。 これは team blogへのリンクで、詳細な情報とダウンロードへのポインタがあります。

1


私はCodeProjectのこの仲間によってThreadPoolの上の 興味あるテイクを見つけました。 これはインスタンス化されたThreadPoolであり(したがって静的ではなく、スレッド間で細断処理されています)、パフォーマンスをカスタマイズするためのいくつかの機能を備えています。

0


すべての回答に感謝します。他の図書館を調べてみたところ、私が見ていたものにとって、それらのすべてが非常に複雑すぎることに気付きました。

私は基本的に `Threading.Thread()`を中心としたブロッキングキューの実装である私自身の実装に固執し、それはちょうどうまく機能します。

0


タイトルとURLをコピーしました