【经典面试题】生产者消费者模型

本文介绍了条件变量作为线程同步机制的作用,详细阐述了其使用步骤,并通过一秒钟打印一次激活的案例展示了如何运用条件变量。同时,探讨了生产者消费者模型,强调了在多生产者多消费者场景中互斥锁的重要性,提供了具体的使用规范及代码示例。
摘要由CSDN通过智能技术生成

条件变量

条件变量是利用线程间共享的全局变量进行同步的一种机制。主要包括两个动作:一个线程等待“条件变量的条件成立”而挂起,另一个线程让“条件成立(给出条件成立信号)”

作用:为了防止竞争

注意事项:条件变量的使用总是和一个互斥锁结合在一起

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值