在我进入这个问题之前,我想说的是,我已经阅读了 IIS 7、7、7.5 的线程建模,所以我知道线程是如何处理的。
当请求进来时,我的应用程序启动一个线程。
我们可以将线程假设为 cron 作业。
- GET 请求进来,让我们说 /Handle
- 在 /Handle 的范围内,我从该操作开始一个线程,线程 A
- 我不会长时间轮询 GET 请求,因此它会立即返回给用户。所以处理 GET 的线程返回到 POOL
- 然后我等到线程 A 完成做任何其他事情。
- 所以据我所知,没有线程正在运行。处理 GET 和 THREAD A 的线程都已退出。
我多次提出相同的要求。我总是等待两个线程退出。过了一会儿`Thread.Start()1 功能块。
问题:我知道线程正在返回并且我没有泄漏任何幽灵线程。为什么 IIS 不允许我在 4-5 个请求后启动新线程。?
为用户应用程序创建应用程序线程的正确方法是什么。如果我说Thread t= new Thread()
,这是否会从处理GETS 或CLR 的池中分配一个线程?我正在使用 IIS7。
我知道我退出了每个线程,我在 THREAD A 上调用了一个 JOIN,它永远不会阻塞,此时我并不担心可伸缩性,所以我总是让一个用户按顺序访问服务器。