您的位置:首页 > 其它

Thrift 的TNonblockingServer运行原理分析

2016-12-29 13:27 344 查看
整理下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基本是一样的,可以参考着看看~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: