gpt4 book ai didi

c# - APM 模式使用线程池中的线程?

转载 作者:行者123 更新时间:2023-11-30 22:14:32 28 4
gpt4 key购买 nike

我想知道 .net API 中现有的 I/O 绑定(bind) APM 调用(BeginGetResponse、BeginRead 等)是使用线程池中的线程还是使用当前线程直到回调。我知道它一直“异步”到硬件/网卡。我也知道回调是在线程池上执行的。我的问题是: BeginGetResponse 的所有内容都在Threadpool 上执行,或者直到等待I/O 的内容在当前线程上执行;然后剩下的在线程池上执行。

我希望问题很清楚。我真的很想知道 BeginGetResponse 是如何在底层实现的。

最佳答案

APM 是更通用的机制。但是您正在谈论的情况使用操作系统对 I/O completion ports 的支持.一般的想法是您的主线程调用 BeginXxx() 方法。在引擎盖下,它调用 ThreadPool.BindHandle() ,它设置管道让端口在 I/O 操作完成时自动启动 TP 线程。该线程调用您的回调方法。

在 I/O 操作发生时没有线程在等待的核心思想。

这支持 MessageQueue、FileStream、PipeStream、Socket、FileSystemWatcher、IpcChannel 和 SerialPort。

关于c# - APM 模式使用线程池中的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18457323/

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