gpt4 book ai didi

.NET Threadpool 工作线程和异步 IO 线程

转载 作者:行者123 更新时间:2023-12-04 15:04:41 27 4
gpt4 key购买 nike

好的,据我了解,.NET 线程池维护了许多后台线程,准备用于某种任务。

Get/SetMinThreads 和 Get/SetMaxThreads 方法包含两个可以返回或调整的参数。

根据MSDN这两个参数表示工作线程数和用于异步 IO 操作的线程数。

什么类型的操作使用这些特定类型的线程?

工作线程:

  • QueueUserWorkItem 我想。
  • 还要别的吗?

  • 异步 IO 线程:
  • 例如,在文件流上调用 Beginxxx、Endxxx 时使用? (或网络、串口等)
  • 还要别的吗?

  • 感谢您的任何澄清,或有关该主题的良好链接。

    最佳答案

    是的,QUWI 也是委托(delegate)类型的 BeginInvoke() 方法。 BackgroundWorker 被少数几个类(class)雇用,是最著名的例子。在底层仅使用委托(delegate)的 BeginInvoke()。

    I/O 完成线程是一个非常低级的 Windows 功能,用于在 I/O 请求完成时让代码快速运行。从 ReadFileEx() 函数的最后一个参数中最明显的是,还有其他参数。托管等效项通过 ThreadPool.BindHandle() 公开。

    .NET 类的工作就是做到这一点。只有少数人使用它:FileStream、PipeStream、FileSystemWatcher、Socket、SerialPort 的内部工作线程和一些 WCF channel 支持类。

    我个人不太喜欢在 API 中公开这些配置细节,尤其是 I/O 完成线程。 BCL 团队有点逃避现实,他们最终有些 FUD。这些设置影响整个程序,默认值已经相当大方了。修补它们大致相当于调用 GC.Collect()。如果你能找到一个很好的理由来改变它们,那最好是被困在 hell 里,只剩下一小时就能 catch 回家的飞机了。到过那里 :)

    关于.NET Threadpool 工作线程和异步 IO 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3172773/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com