1, lock, 原子操作的问题, mutex.
2, 同步问题, wait, cond.
这是两类问题:
mutex是竞争, 脏, 不可信;
同步问题是同步的意思, 以防止有一个死循环一直在那侦听这种感觉, 操作系统提供挂入等待队列, 由信号参与唤醒, 效率什么的好的多.
一般的同步问题编写的框架:
pthread_mutex_lock(q->mutex);
while( condition false ) //反复要去判断条件, 因为睡眠以后出来还是要判断条件的
{ // 其实这边会释放锁
pthread_cond_wait(q->flag, q->mutex);
// 这边继续take这把锁
}
condition setting;
flag setting;
pthread_mutex_unlock(q->mutex);
pthread_cond_signal(q->flag);