条件变量需要与互斥锁搭配使用,实现同步机制
int pthread_cond_init(pthread_cond_t *restrict cond,const pthread_condattr_t *restrict attr);
功能:初始化条件变量
参数:cond:是一个指向结构pthread_cond_t的指针
restrict attr:是一个指向结构pthread_condattr_t的指针,一般设为NULL
返回值:成功:0 失败:非0
int pthread_cond_wait(pthread_cond_t *restrict cond,pthread_mutex_t *restrict mutex);
功能:等待信号的产生
参数:restrict cond:要等待的条件
restrict mutex:对应的锁
返回值:成功:0,失败:不为0
注:当没有条件产生时函数会阻塞,同时会将锁解开;如果等待到条件产生,函数会结束阻塞同时进行上锁。
int pthread_cond_signal(pthread_cond_t *cond);
功能:给条件变量发送信号
参数:cond:条件变量值
返回值:成功:0,失败:非0
注:必须等待pthread_cond_wait函数先执行,再产生条件才可以
此函数和pthread_cond_broadcast区别是:
pthread_cond_broadcast函数相当于是广播,会将所有等待此条件的线程唤醒;pthread_cond_signal只能唤醒单个等待此条件的线程
int pthread_cond_destroy(pthread_cond_t *cond);
- 功能:将条件变量销毁
- 参数:cond:条件变量值
- 返回值:成功:0, 失败:非0
线程:
进程和线程区别
同步:信号量、计数信号量
互斥:互斥锁