tars客户端(二):请求包从主调线程到网络线程的过程

一.主调线程的线程私有数据

主调线程不是固定的,可以是业务自己创建的线程,或者是服务端的handle线程,甚至是客户端的网络线程(调用框架其他节点的rpc接口),为了能保存rpc调用的上下文,每个主调线程会创建自己的线程私有数据ServantProxyThreadData。在ServantProxy::invoke()里,可以看到获取私有线程数据:

void ServantProxy::invoke(ReqMessage * msg, bool bCoroAsync)                                                                   
{                                                                                                                              
    msg->proxy         = this;                                                                                                 
    msg->response.iRet = TARSSERVERUNKNOWNERR;                                                                                 
                                                                                                                               
    //线程私有数据                                                                                                             
    ServantProxyThreadData * pSptd = ServantProxyThreadData::getData();                                                        
    assert(pSptd != NULL); 

    ..........
}

ServantProxyThreadData的主要成员如下:

class ServantProxyThreadData : public TC_ThreadPool::ThreadData                                                                
{                                                                                                                              
public:                                                                                                                        
    static TC_ThreadMutex _mutex;  //全局的互斥锁                                                                              
    static pthread_key_t  _key;    //私有线程数据key                                                                           
    static SeqManager *   _pSeq;   //生成seq的管理类                                                                           
                                                                                                                               
                                                                           
........................

                                                                                                                             
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值