我看了一些协程的实现,很多是通过epoll来作为协程调度器,但是,我这里有一个问题:通过epoll是可以得到所有已经就绪了的文件描述符,也就意味着每次的操作都是非阻塞的,此时,为什么还需要创建协程呢?例如这位兄弟的写法:http://www.qmailer.net/archiv...
2 回答
慕森卡
TA贡献1806条经验 获得超8个赞
首先要理解这两个概念的区别:epoll是操作系统在网络层面的多路复用机制是为了能够支撑更多的连接来设计的。协程则是一种更加抽象层面的编程手段,一般是在语言层面或者框架层面来实现,至于实现的手段是什么则取决于语言或者框架开发者了,与协程对应的应该是线程。
慕婉清6462132
TA贡献1804条经验 获得超2个赞
epoll是网络IO模型,是用来处理并发网络请求的,一般现在开发的所谓高并发的服务,大都基于epoll。而goroutine是用来处理线程创建和调度过于耗资源的,尤其是线程出现阻塞,io等待的时候,会出现上下文切换,非常耗时。而goroutine相对比较轻量级。
添加回答
举报
0/150
提交
取消