鹅厂开源框架tars之基础组件

一、线程安全队列

    typedef TC_ThreadQueue<tagRecvData*, deque<tagRecvData*> > recv_queue;  接收队列
    typedef TC_ThreadQueue<tagSendData*, deque<tagSendData*> > send_queue; 发送队列

   定义如下:实现比较简单TC_ThreadQueue模板类直接继承了:TC_ThreadLock,从之前文章网络层实现的介绍可以看到这个类比较重要,因为从框架中收到的网络包都会加入到这个缓存队列里面,然后多业务线程ServantHandle会调用waitForRecvQueue从该队列里面取网络数据包,然后调用dispatch调用协议消息对应的处理函数

   

TC_ThreadQueue继承于TC_ThreadLock用于实现线程锁和wait如下:

如上图调用了:Lock lock(*this);加锁 ,避免网络层接收数据和业务层取同一队列的数据冲突

二、TC_ThreadLock普通线程锁

三、TC_Thread线程基类

四、监控

心跳上报给node

//发送心跳给node 多个adapter分别上报
#define TAF_KEEPALIVE(adapter)      {TafNodeFHelper::getInstance()->keepAlive(adapter);}

上报连接数 比率

 it->second->_pReportConRate->report(it->second->getNowConnection()*1000/it->second->getMaxConns());

用户自定义属性基类PropertyReport

it->second->_pReportQueue->report(it->second->getRecvBufferSize());

未完待续.....

 

猜你喜欢

转载自blog.csdn.net/cyblueboy83/article/details/82817269
今日推荐