这两个函数是多线程操作中非常重要的,也是相对来说难理解的。这里梳理一下。
首先是函数介绍,
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
这里有两个参数,cond和mutex。cond是条件,这个值可以用宏做声明:
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
也可以使用函数来声成:
int pthread_cond_init(pthread_cond_t *cond, pthread_cond_attr *cattr);
int pthread_cond_destroy(pthread_cond_t *cond);
第一个函数是init,第二个为destroy。函数中的cond便是条件变量。这里需要说下,第一个函数中的cattr是属性声明,一般用NULL使用默认属性,其属性在函数返回时,写道cond指向的内存。
另一个主角是:
int pthread_cond_signal(pthread_cond_t *cond)
这两个一般搭配使用,pthread_cond_wait将当前线程阻塞等待,而在调用pthread_cond_signal后,将再次激活。当然,还有其它一些函数搭配使用,看下面的例子。
#include<pthread.h>
#include<unistd.h>
#include<stdio.h>
#include