一、线程安全队列
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());
未完待续.....