Further comments
Having large amounts of blocked threads is not an issue just a waste of resources. A pool is more resource effecient with a very minor overhead ~ 10 ms ( 15 ms on a multi processor machine) . Again if you need finer granularity dont use a managed environment. As Ian mentiones switch time is again the issue - on a PC architecture it is very hard to do this in less than 300 micro seconds. NT and multi processor machines are much worse . To cope with this worse time - multi processor machines on NT have a timeslize of 15ms nstead of 10ms. ( 2 processor I have not checked it on bgger machiens) . As you get less switches. If you are processor bound threads will interupt a currently running thread this may be a bad idea as the switch causes overheads - fewer threads mean more blocking but higher efficiency. It is an issue having large amounts of threads per process. Everytime a process calls gets current active thread I bet you a linear search happens. Also regarding the UNIX discussion - Unix threads are closer to NT fibres ( light weight threads) also their processes are lighter than NT hence developers use a lot more. Ben You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.