文章目录

GoLang之协程和IO多路复用更配[第三话]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目地址:
https://github.com/fengyoulin/ef

在IO多路复用中实现业务逻辑,
要随着IO事件的等待和就绪
频繁的保存和恢复现场,
这样会加大业务实现复杂度。

而协程天然的适合需要主动让出执行权,
并且可以随时恢复执行的场景~

所以,可以将业务逻辑交给协程来执行,
在业务处理过程中
按需注册IO事件与让出执行权。

在IO多路复用这里,
事件循环依然存在,
依然要在循环中逐个处理就绪的fd。

如果是用于监听端口的fd就绪了,
就建立连接创建一个新的fd,
并交给一个协程来负责,
协程执行入口就指向业务处理函数入口。

如果是其它等待中的fd就绪了,
只需要恢复关联的协程即可,
这样IO多路复用就和具体业务逻辑完全解耦了!

协程和IO多路复用的合作方式大抵如此,
从一个精简版实例上手学习,
对于进一步理解Golang、OpenResty等
经典的协程实现方式大有裨益_