この質問に入る前に、私は IIS 7、7、7.5 のスレッド モデリングを読んだので、スレッドがどのように処理されるかを知っています。
私のアプリケーションは、リクエストが来るとスレッドを開始します。
スレッドを cron ジョブと見なすことができます。
- GET リクエストが入ってきます。/Handle としましょう
- /Handle のスコープで、そのアクションからスレッドを開始します。THREAD A
- GET リクエストを長くポーリングしていないため、すぐにユーザーに返されます。したがって、GET を処理するスレッドは POOL に返されます。
- 次に、スレッド A が他の処理を完了するまで待ちます。
- したがって、私の知る限り、スレッドは実行されていません。GET を処理していたスレッドとスレッド A の両方が終了しました。
同じリクエストを数回連続して行います。私は常に両方のスレッドが終了するのを待ちます。しばらくすると、`Thread.Start()1 関数がブロックされます。
質問 : スレッドが戻ってきて、ゴースト スレッドがリークしていないことはわかっています。IIS が 4 ~ 5 回のリクエスト後に新しいスレッドを開始できないのはなぜですか。?
ユーザー アプリケーションのアプリケーション スレッドを作成する正しい方法は何ですか。私が言った場合Thread t= new Thread()
、これはGETSまたはCLRを処理したプールからスレッドを割り当てますか? IIS7を使用しています。
各スレッドを終了し、 THREAD A で JOIN を呼び出し、ブロックすることはありません。この時点では、スケーラビリティについて心配していないため、常に 1 人のユーザーがサーバーに順番にアクセスしています。