Thrift 的TNonblockingServer运行原理分析

    整理下thrift TNonblockingServer的工作流程,简单记录下, 因为处理过程比较复杂不具体分析了,
TNonblockingServer的工作流程如下:


1.   server 创建 多个 iothread 和  工作线程池 workpool  thread (给iothread发消息的方式主要通过管道的方式进行 )
2.   传递listenfd 给 iothread 的 number 为0的线程,该线程监听listen socket的accept事件


3.  当0号iothread 监听到accept事件时, 创建connection 并交给相应的iothread处理数据收发(通过管道方式通知相应的iothread)



4. iothread收到新的connection 根据 connection的状态 进行数据收发等处理 ,该逻辑由conection的
transition()函数完成, 第一部肯定是请求报文的read操作



5.  当connection的一个请求数据read完成时, 封装成任务task交由workpool  thread 的线程池处理

6. workpool  thread 任务线程处理完成后会调用notifyIOThread通知connection对应的iothead来发送结果给客户端

7. iothread将处理完成结果发送给客户端, 一个请求处理完成.
~~TNonblockingServer.py的设计思路跟CPP基本是一样的,可以参考着看看~~


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值