说的非常对。
交易管理器的设计,原来是没有协程的。采用接续模式。就是把任务划分成一个个的部分(我管他叫珠子),由IO(epoll,链子)接续起来。这样也能解决80~90%的问题。
但是有两个问题:
1是在数据包比较大,网络比较卡的情况,IO会长时间占用线程。
2一些步骤,如密钥协商,和登录认证,本身是一个完整的程序,很难劈开,占用时间又比较长。
所以把底层的IO函数重载成协程式的,就解决了这些问题。
【 在 wallyz 的大作中提到: 】
: 我的看法:
: 如果要提供编程框架给别人用,为了让别人用起来像阻塞式变成一样方便,那这时候可能需要考虑用协程的方式实现你的框架
: 如果是为了自己用,完全可以自己用一个控制块来对应一个连接或者请求,到底对应什么取决于实际业务逻辑,实现一个状态机,然后直接用传统的方式epoll或者封装过的libev或者asio,来写代码,连接或者请求的状态变化在控制块里面记录。然后根据不同的状态和消息驱动运转状态机,相比攒一个协程的实现方式,这种方式既直观又省力
: ...................
--
FROM 221.218.61.*