• 线程操作
o 线程安全队列: TC_ThreadQueue
o 普通线程锁: TC_ThreadLock
o 线程基类: TC_Thread
• 智能指针
o 智能指针类: TC_AutoPtr
• DB操作
o MySQL操作类: TC_Mysql
• 网络操作
o 网络组件
• 服务配置
o 命令解析类: TC_Option
o 配置文件类: TC_Config
• 仿函数
o 通用仿函数类: TC_Functor
• Hash
o hash算法
• 异常处理
o 异常类: TC_Exception
如上图调用`push_front`函数的时候调用 `std::unique_lock<:mutex> lock(_mutex)`加锁 ,避免网络层接收数据和业务层取同一队列的数据冲突,`_cond.notify_one()` 通知等待在该锁上某一个线程醒过来,调用该函数之前必须加锁,因为有数据过来了,例如网络层有线程需要取包并进行分发处理。
再看一个成员函数`pop_front`,从头部获取数据,没有数据则等待。`millisecond` 阻塞等待时间(ms)
• `0` 表示不阻塞
• `-1` 永久等待
TC_ThreadLock 类的定义如下
TC_Monitor 线程锁监控模板类。通常线程锁,都通过该类来使用,而不是直接用TC_ThreadMutex、TC_ThreadRecMutex。
类的定义template class TC_Monitor 需要传入两个模板参数,TC_Monitor 包括以下成员变量: