我正在研究一个 TFTP 实现,它正在从一个复杂的多线程实现过渡到一个单线程/单进程实现,它使用状态机来跟踪连接的会话的状态。TFTP 足够简单,并且并发会话的数量足够小,除了大量的代码大小和复杂性节省之外,对软件实际上没有任何影响。
当然,当其他人连接时,我不能只阻止单个会话。为了解决这个问题,我的第一个想法是 POSIX AIO,尽管经过一些研究我读到它是
- 记录不充分,不完整
- 仅适用于磁盘 I/O 并且不支持套接字,或者适用于套接字但仅用于读/写 - 不适用于侦听。
此链接 ( http://davmac.org/davpage/linux/async-io.html )中包含一个示例,尽管我也找到了其他示例。08年之前的 stackoverflow 帖子( POSIX 异步 I/O (AIO) 的状态是什么? )中给出了一些额外的观点。
对于 C 开发人员来说,AIO 是否仍然像人们声称的那样破碎?人们真的不使用 AIO,而是主要坚持轮询/选择或有限大小的线程池吗?