我很想知道客户端(例如 Java 的 AsyncHttp 客户端或 C# 的 Async Web 请求功能)是如何工作的。基本上,低级代码如何工作以确保线程永远不会只是等待 IO 操作的结果。
我的猜测是机器中断。但我不知道它们如何在 C# 或 Java 等高级语言中工作。
我很想知道客户端(例如 Java 的 AsyncHttp 客户端或 C# 的 Async Web 请求功能)是如何工作的。基本上,低级代码如何工作以确保线程永远不会只是等待 IO 操作的结果。
我的猜测是机器中断。但我不知道它们如何在 C# 或 Java 等高级语言中工作。
它可以是任何数量的东西。今天的大多数操作系统都有非阻塞 IO 调用,它可以切换到使用这些而不是阻塞 IO 调用。比这更低的级别,这将取决于设备。几乎所有设备都会引发由中断处理程序处理的中断,但操作系统如何将其转换为非阻塞 IO 以及完成的工作方式与操作系统和异步实现不同。
我认为它们的工作方式是通过一些 OS API 设置对通用处理程序的中断响应,调用该通用处理程序,它启动一个新线程并调用您提供的处理程序。
这是有关处理 C# 的异步 Web 请求的更多信息。
发出异步请求 .NET