好的,据我所知,.NET Threadpool维护了许多后台线程,可以用于某种任务。
Get / SetMinThreads和Get / SetMaxThreads方法包含两个可以返回或调整的参数。
根据MSDN,这两个参数表示工作线程数和用于异步IO操作的线程数。
什么类型的操作使用这些特定类型的线程?
工作线程
异步IO线程:
感谢您对此主题的任何澄清或良好链接。
答案 0 :(得分:6)
是的,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()。如果你设法找到一个改变它们的好理由,最好是当它被困在一个地狱里,只剩一个小时就可以把飞机带回家。去过那里:))