Mutex
- Mutex 即能处理进程内部同步也能处理进程间同步
- 如果在构造的时候初始化为SHARED 类型的说明他可被用于进程间同步
Class Mutex{
public: enum{
PRIVATE = 0, //仅限于本进程的同步
SHARED = 1 //支持跨进程的同步
};
}
- 提供了3个方法
status_t lock(); //阻塞
void unlock();
status_t trylock();//非阻塞
Mutex 最终调用 pthread_mutex_lock(mMutex)等相应的方法
Condition
- 相对于Mutex Condition为了节省cpu而设计,因为在某种情况下某个线程对锁的需求相对于其它线程更少点只有在某中条件的时候,才需要,免去像Mutex的轮询方法。
class Condition{
public:
enum{
PRIVATE = 0,
SHARED = 1
};
....
status_t wait(Mutex &mutex);
status_t waitRelative(Mutex &mutex, nsecs_t reltime );
void signal();
void broadcast();
}
- wait是阻塞的
- waitRelative 是非阻塞的