主要观点:作者今天感觉很邪性,提到 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 上未实现等。
重要细节:
Future
trait 的定义及工作原理。poll
系统调用在 Windows 和 Unix 上的差异及效率问题。- 与 AFD 交互的具体步骤,如访问内部函数、创建句柄、使用 I/O 控制等。
- 提到
mio
、tokio
、wepoll
、polling
、smol
、async-std
、libuv
等与\Device\Afd
的关系。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。