And*_*ndy 6 .net multithreading definition threadpool
好吧,据我所知,.NET Threadpool维护了许多后台线程,可以用于某种任务.
Get/SetMinThreads和Get/SetMaxThreads方法包含两个可以返回或调整的参数.
根据MSDN,这两个参数指示工作线程的数量和用于异步IO操作的线程数.
什么类型的操作使用这些特定类型的线程?
工人线程:
异步IO线程:
感谢您对此主题的任何澄清或良好链接.
是的,QUWI,也是委托类型的BeginInvoke()方法.在几个类中使用,BackgroundWorker是最着名的例子.引擎盖下只使用委托的BeginInvoke().
I/O完成线程是一种非常低级的Windows功能,可以在I/O请求完成时使代码快速运行.从ReadFileEx()函数的最后一个参数中可以看到,还有其他参数.托管等效项通过ThreadPool.BindHandle()公开.
这样做是.NET类的工作.只有少数使用它:FileStream,PipeStream,FileSystemWatcher,Socket,SerialPort的内部工作线程和一些WCF通道支持类.
我个人并不喜欢在API中公开这些配置细节,尤其是I/O完成线程.这是BCL团队的一个副作用,一些FUD就在他们的最后.这些设置会影响整个程序,默认设置已经相当慷慨.修改它们大致相当于调用GC.Collect().如果你设法找到一个改变它们的好理由,最好是当它被困在一个地狱里,只剩一个小时就可以把飞机带回家.到过那里 :)