条件变量(四)

条件变量的理念:当线程在等待满足某些条件时使线程进入睡眠状态,一旦条件满足,就唤醒因等待满足特定条件而睡眠的线程。

条件变量(条件锁)也可以解决线程同步和共享资源访问的问题,条件变量是对互斥锁的补充,它允许一个线程阻塞并等待另一个线程发送的信号,当收到信号时,阻塞的线程被唤醒并试图锁定与之相关的互斥锁。

使用条件变量 pthread_cond_t cond

条件变量的初始化与销毁
条件变量使用之前需要初始化,有两种方式:

1、 Pthread_cond_t cond = PTHREAD_COND_INITIALIZER(静态初始化)
2、 Int pthread_cond_init(pthread_cond_t *restrict cond,const pthread_condattr_t *restrict attr) (动态初始化)

条件变量使用完成后需要销毁

Int pthread_cond_destroy(pthread_cond_t *cond)

条件变量使用需要配合互斥量
1、Int pthread_cond_wait( pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex )

2、Int pthread_cond_timewait(pthread_cond_t *restrict cond, pthread_mute_x *restrict mutex,const struct timespec *restrict abstime)

当条件满足时,需要唤醒等待条件的线程
Int pthread_cond_broadcast(pthread_cond_t *cond)

Int pthread_cond_signal(pthread_cond_t *cond)

你可能感兴趣的:(linux)