专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
今天看啥  ›  专栏  ›  dotNET跨平台

聊一聊 C#异步中的Overlapped是如何寻址的

dotNET跨平台  · 公众号  ·  · 2025-01-07 08:00
    

文章预览

一:背景 1. 讲故事 前段时间训练营里的一位朋友提了一个问题,我用ReadAsync做文件异步读取时,我知道在Win32层面会传 lpOverlapped 到内核层,那在内核层回头时,它是如何通过这个 lpOverlapped 寻找到 ReadAsync 这个异步的Task的呢? 这是一个好问题,这需要回答人对异步完整的运转流程有一个清晰的认识,即使有清晰的认识也不能很好的口头表述出来,就算表述出来对方也不一定能听懂,所以干脆开两篇文章来尝试解读一下吧。 二:lpOverlapped 如何映射 1. 测试案例 为了能够讲清楚,我们先用 fileStream.ReadAsync 方法来写一段异步读取来产生Overlapped,参考代码如下:          static   void   Main ( string [] args )         {             UseAwaitAsync();             Console.ReadLine();         }          static   async  Task < string >  UseAwaitAsync ( ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览