条件变量
条件变量是利用线程间共享的全局变量进行同步的一种机制。主要包括两个动作:一个线程等待“条件变量的条件成立”而挂起,另一个线程让“条件成立(给出条件成立信号)”
作用:为了防止竞争
注意事项:条件变量的使用总是和一个互斥锁结合在一起
1.pthread_cond_t cond; //定义条件变量的全局变量
2.pthread_cond_init(&cond,NULL) //初始化
3.pthread_cond_wait(&cond,&mutex) //等待条件 mutex为互斥量 阻塞时将mutex置成1,返回时,将mutex恢复程原样
4.pthread_cond_signal(&cond)//发送信号让等待条件满足
5.pthread_cond_destroy(&cond)//销毁条件变量
案例:一秒钟打印一次激活
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<pthread.h>
4 pthread_cond_t cond;
5 pthread_mutex_t mutex;
6 void *r1(void *arg)
7 {
8 while(1)
9 {
10 pthread_cond_wait(&cond,&am