主要观点:作者今天感觉很邪性,提到 Windows 网络代码像用胶带粘在系统上,介绍了 Windows 的 WinSock 及其存在的问题,如对大量套接字效率低等,还对比了 Unix 的epoll和kqueue,指出 Windows 没有类似的高效 polling API,只有WSAPoll且需 I/O 操作才能唤醒,而 Windows 的输入/输出完成端口(IOCP)虽好但与Future模型和 Rust 的借用检查器不兼容,进而提出通过与 Auxillary Function Driver(AFD)直接交互来解决问题,介绍了访问 AFD 的步骤,但也提到使用不稳定且未记录的 API 如\Device\Afd存在风险,如在 Wine 上未实现等。
关键信息:
- Windows 网络代码存在问题,WinSock 效率低。
- Unix 的
epoll和kqueue更高效。 - Windows 无等效高效 polling API,IOCP 虽好但不兼容。
- 可通过与 AFD 交互解决问题,需访问 Windows 内部函数等。
- 使用
\Device\Afd存在风险,如在 Wine 上未实现等。
重要细节:
Futuretrait 的定义及工作原理。poll系统调用在 Windows 和 Unix 上的差异及效率问题。- 与 AFD 交互的具体步骤,如访问内部函数、创建句柄、使用 I/O 控制等。
- 提到
mio、tokio、wepoll、polling、smol、async-std、libuv等与\Device\Afd的关系。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。