文档目录

Reactor 的问题:读取数据的操作是同步的——调用 read() 后线程阻塞等待数据从内核拷贝到用户缓冲区。

Proactor / io_uring:你告诉内核"数据读到我指定的缓冲区",内核完成后通知你。读数据不阻塞。

Reactor(epoll):
  程序:epoll_wait 告诉我可读了
  程序:read(fd, buf, len)  ← 这里阻塞等数据拷贝
  程序:处理数据

Proactor(io_uring):
  程序:提交 SQE → "把数据读到 buf,完成后通知我"
  程序:干别的事情
  内核:数据准备好 → DMA 直接拷贝到 buf
  内核:产生 CQE → 通知程序
  程序:从 CQE 拿到完成的 buf
  程序:处理数据

你的 SimpleAsyncLogger 的 Linux 后端 (io_engine_linux.cpp) 用的就是 Proactor 模式——提交 WRITE_FIXED 后不等待,CQE 完成后处理。