I've been reading a lot about how IIS manages threads for http requests (taking them from the pool once needed and "releasing" once the request has been processed)...
And about the whole concept of async requests in, for example, ASP.NET MVC that are used to "release" threads back to the pool when long-wait I/O operations are executed on the side.
But what I can't understand is - if I start "normal" threads using Thread.Start()
- these threads are "unpooled", right? And they don't use up the IIS request thread pool - is this correct?
I tried Googling but can't find the exact answer. I know that Thread.Start
does not use the .NET's built-in ThreadPool
at all - but I have doubts about IIS using the same mechanisms for its request threads, could it be that IIS "request pool" is different from the .NET's ThreadPool
and uses some lower level pool, so that my Thread.Start
will also end up there?
I guess what I'm asking is - is there a limit on Thread.Start()
in an ASP.NET app and can a lot of Thread.Start's block my web application during a high load because of thread-queuing?
UPDATE: found this answer but it does not explain why and what happens: Why ASP.NET kills my background thread?