7

遅いストアド プロシージャを実行する ASP.NET 用の非同期ハンドラーの作成に取り組んでいます。低速ページと高速ページの混合負荷で追加のスループットを得るには、ASP.NET が使用するスレッド プールとは別のスレッド プールで低速ページを実行する必要があることを理解していると思います。使用するスレッドが少ない (間違っている場合は訂正してください)。

だから私は見つけましたSystem.Threading.ThreadPool-それはうまくいくはずですが...

このカスタム プールを使用するネット上のさまざまなチュートリアル、John Skeet の MiscUtilsにあるもの、および非同期パターンに関するこのチュートリアルで参照されているカスタム スレッド プールなど。

System.Threading.ThreadPoolは 1.1 から存在しています。なぜ人々は、まったく新しいものを作成する必要性を日常的に感じているのでしょうか? の使用を避けるべきSystem.Threading.ThreadPoolですか?

私はスレッド化に関しては初心者なので、未定義の専門用語を簡単に使用してください。

更新します。実行するストアド プロシージャは、必ずしも MS-SQL であるとは限らず、また .NET などの組み込みの非同期メソッドを使用できるとは限りませんBeginExecuteNonQuery()

4

1 に答える 1

3

これが私がトピックで見つけたものです。ASP.NET http://madskristensen.net/post/Done28099t-use-the-ThreadPool-in-ASPNET.aspxで ThreadPool を使用しない理由。かなり古いですが、あまり変わっていないと思います。または、間違っている場合は修正してください。

System.Threading.ThreadPool またはカスタム デリゲートを使用し、その BeginInvoke を呼び出すと、アプリケーションのワーカー スレッドをすばやく起動できます。しかし残念なことに、これらは ASP.NET が HTTP 要求を処理するために使用するのと同じプールからスレッドを消費するため、アプリケーションの全体的なパフォーマンスを低下させます。

作成されたスレッドはアプリケーションのプールの一部ではないため、System.Threading.Thread クラスを使用してカスタム スレッドを使用すると、問題が解決するはずです。

于 2011-11-16T16:19:19.387 に答える