提供线程类和线程同步类,基于pthread实现,包括以下类:

Thread:线程类,构造函数传入线程入口函数和线程名称,线程入口函数类型为void(),如果带参数,则需要用std::bind进行绑定。线程类构造之后线程即开始运行,构造函数在线程真正开始运行之后返回。

线程同步类(这部分被拆分到mutex.h)中:

Semaphore: 计数信号量,基于sem_t实现
Mutex: 互斥锁,基于pthread_mutex_t实现
RWMutex: 读写锁,基于pthread_rwlock_t实现
Spinlock: 自旋锁,基于pthread_spinlock_t实现
CASLock: 原子锁,基于std::atomic_flag实现


线程模块总体比较简单,在对pthread相关的接口有一定了解的情况下,参考源码应该不难理解,这里说几个重点:

1. 为什么不直接使用C++11提供的thread类。按sylar的描述,因为thread其实也是基于pthread实现的。并且C++11里面没有提供读写互斥量,RWMutex,Spinlock等,在高并发场景,这些对象是经常需要用到的,所以选择自己封装pthread。

2. 关于线程入口函数。