2009-04-27 11 views
1

ASP.NETでは、スレッドプールにはスロットが限られているため非同期メソッドが使用されています。非同期メソッドを使用すると、メソッドがアウトバウンドでスレッドプールスロットを解放し、サーバーが処理できる要求の数を増やします同じ時間間隔でどのような非同期メソッドの目的ですか?

他のタイプのアプリケーション(Windowsフォームなど)では、スレッドの制限がはるかに高いと思います。このような場合は、両方のバージョン(同期と非同期)を使用しているときの非同期メソッドの目的ですか?

+0

基本的な説明を見てください: Donny

答えて

3

ASP.NET構成でワーカースレッドプールを増やすことができます。これは、マルチコアボックスとIIS 6で多少役立つことがわかりました。IIS 7で行ったことはほとんどありませんが、スレッドを管理するようです微調整する必要はありません。

両方の理由を直接使用する理由は、作業単位を非同期にすることで、他のスレッドが完了するのを待たずに、別の作業単位が開始するプールからスレッドを解放できるようにすることです。これにより、アプリは一度に多くの作業を並列化できます。

すべてのあなたのaspx要求はとにかくワーカースレッドで実行されているが、あなたのリクエストをお非同期チャンク場合には、その一部を実行することができますし、むしろ、すべてを一度にあなたの要求のすべてを実行するよりも、プールにスレッドを戻します。

習得が難しく、習得が難しいので注意してください。 ASPの外:)

http://www.guidanceshare.com/wiki/ASP.NET_2.0_Performance_Guidelines_-_Threading

、Windowsフォームで "無限" のスレッドプールのようなものはありません。スレッド/スレッドが処理できるよりも多くのスレッドをスピンアップさせると、頻繁にコンテキストを切り替えるので、スレッドの目的を破ることになります。それは非常に大きく高度なトピックであるので、私はそのテーマについてさらに読むことにします。

http://en.wikipedia.org/wiki/Thread_(computer_science)

+0

さて、私の質問は、スレッドの制限がはるかに高い(ほとんど無制限)ASP.NETの世界の外でのシナリオに関するものでした。 –

+0

私はASP.NETの質問に答えたので、私はあなたが編集する前に答えました。 aspの世界の外では、同じ概念が依然として関連しており、スレッドの量に「無限」というものはありません。 –

+0

説明に感謝します –

2

基本的に、それは何もしないの周りに待機しているスレッドを持っている廃棄物です。スレッドプールが限られているか、どれだけ大きなスレッドプールを作ることができるかは問題ではありません。それぞれのスレッドが最大限の容量で使用されることが一般的な望みです。他の有用なことをしているときに、スレッドがネットワークコールを待つか、多分長いI/Oを出すことは意味がありません。この要望は、スケーラビリティ、パフォーマンス、スループットなどのコンセプトで定量化されていますが、必ずしも純粋な目標ではありません。正味の目標は、可能な限り多くのタスクに希少なリソース(プロセッサー)を使用することです。これに対する興味深い対抗策は、並列化の概念です。大量のリソースがあり、必ずしも多くのタスクを処理する必要がない場合は、タスクを適切に配布することが目標です。

3

非同期メソッドの目的は、応答性の高いアプリケーションを提供することです。同じスレッド上ですべてのタスクを実行すると、スレッドは操作が完了するのを待っているため何もできないため、スレッドが長時間実行されている同期操作を実行するたびにアプリケーションが停止するように見えます。これを回避するには、非同期呼び出しを使用してこれらのタスクを分離してスレッドを分割することができます。

関連する問題