三、条件变量。
1、 什么是条件变量?
线程因为某一个条件/情况不成立下,进入一个变量中等待,这个存放线程的变量就是条件变量。
条件变量一定要与互斥锁连用。
2、条件变量的函数接口。
1)先定义一个条件变量。 -> 数据类型: pthread_cond_t
pthread_cond_t cond;
2)初始化条件变量。 -> pthread_cond_init() -> man 3 pthread_cond_init
动态初始化:
头文件:
#include <pthread.h>
原型:
int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr);
参数:
cond: 条件变量的地址。
cond_attr: 普通属性,填NULL。
返回值:
成功:0
失败:非0
静态初始化:
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
3)如何进入条件变量中等待? -> pthread_cond_wait() -> man 3 pthread_cond_wait
头文件:
#include <pthread.h>
原型:
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);