使用场合:
1.一个线程在等待某个条件,另一个线程会改变这个条件
2.使用pthread_cond_timedwait等待一定的时间
1、创建
pthread_cond_t cond=PTHREAD_COND_INITIALIZER;
int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr); //成功返回0,失败返回错误码.
2、等待
这两个函数内部会解锁传入参数 mutex
一般在调用这两个等待函数之前都会调用 pthread_mutex_lock 函数给即将传入的参数 mutex 加锁
int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex);
int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,const struct timespec *abstime);//成功返回0,失败返回错误码.
3、唤醒
int pthread_cond_signal(pthread_cond_t *cptr);
int pthread_cond_broadcast (pthread_cond_t * cptr);

本文介绍了Linux环境下条件变量的使用,包括创建、等待、唤醒和销毁四个步骤。在使用条件变量时,必须在互斥锁的保护下操作,避免死锁。文章通过实例展示了等待线程如何通过pthread_cond_wait进行等待,并由激活线程使用pthread_cond_signal发送信号来唤醒等待线程。
最低0.47元/天 解锁文章
119

被折叠的 条评论
为什么被折叠?



