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