thrift(1):TNonblockingServer分析

本文深入剖析Thrift的TNonblockingServer工作模型,包括主线程+IO线程+工作池模式,详细阐述各主要类的功能与流程,如TNonblockingIOThread、连接管理、线程池的使用等,展示了如何实现高效的非阻塞服务器。
摘要由CSDN通过智能技术生成

先看下工作模型


这个模型很多库也是类似做法,比如muduo.

概述:主线程 + iothread + work池模式

简单分析下主要类的功能和流程:
TNonblockingIOThread:
        IO线程(主线程),运行着libevent的主循环
        主要成员包括 主线程指针,listensocket,pipefd等

入口: serve()
        创建监听套接字,启动iothread(1-n),主线程直接调iothread[0]的run

启动:run()
        初始化libevent的东西,registerEvents()
        关注listensocket的read事件(id=0时,即为主线程),创建pipefd,关注pipefd的read事件
        运行libevent的主循环

主线程accept, handleEvent:
        accept客户端连接,如果有过载保护,且过载了则可能踢掉这个链接,如果过载策略是清理队列,则执行drainPendingTask(清理并关闭连接)
        设置非阻塞,创建一个connection,这个conn归属到那个iothread是round-robin方式,即自增%size形式,加入后并不关注read/write事件
        如果是单线程就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值