我正在用 C 语言编写我的第一个单线程、单进程服务器,使用 kqueue() / epoll() 来处理异步事件分派。正如人们所预料的那样,跟踪控制流比在阻塞服务器中要困难得多。
是否有一种常见的模式(甚至可能有一个名字)人们用来避免回调驱动的协议实现变成一个巨大的纠结的毛球?
或者,是否有任何用 C 语言编写的非阻塞服务器,其源代码很容易阅读?
任何输入将不胜感激!
更多想法:
很多麻烦似乎来自处理 IO 缓冲的需要。缓冲区填充/排出和单个状态转换之间没有必要的对应关系。缓冲区填充/排水可能对应于 [0, N] 状态转换。)
我看过 libev(此处的文档),它看起来是一个很棒的工具,还有 libevent,它看起来不那么令人兴奋但仍然有用,但它们都没有真正回答这个问题:我如何以一种方式管理控制流不是非常不透明。