条件变量的作用(条件变量使用场景)

条件变量的作用(条件变量使用场景)使用条件变量的最经典的场景就是生产者和消费者 这里的代码有个问题就是 consumers 中 while 循环中 如果 Q 为空的时候 就会不停的执行 else locker unlock 这是相当资源的 那么我们对这段代码进行 改进下 consumers 在进行一次 Q 判断为空的情况 让线程休息一下 这里我们修改一下 consumers 这里我们添加这行代码 让线程休息 5 秒 但是我们仔细想想 这样合理吗 可能有更好的解决方案 比如生产者生产出来一个产品 再通知消费者



使用条件变量的最经典的场景就是生产者和消费者

 
  

consumers在进行一次Q判断为空的情况,让线程休息一下,这里我们修改一下consumers().

 
  

这里我们添加这行代码

 
  

让线程休息5秒

但是我们仔细想想,这样合理吗,可能有更好的解决方案,比如生产者生产出来一个产品,再通知消费者,不就可以解决消费者循环等待的问题了嘛。

生产者生产出来一个产品,再通知消费者,不就可以解决消费者循环等待的问题。利用这个思想代码就可以写成这样

 
  

这里是引入条件变量的头文件和创建一个全局的条件变量

 
  

这里在生产者生产了一个产品后,使用cond.notify_one(),来激活一个消费者。如果有多个消费者可以notify_all()

 
  

消费者要一直wait(),直到生产者告诉它产品生产好了。

所以我们还要对cond.wait(locker)进行修改

 
  
今天的文章 
  条件变量的作用(条件变量使用场景)分享到此就结束了,感谢您的阅读。 
  

                    
编程小号
上一篇 2026-02-22 23:57
下一篇 2026-02-23 08:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/47374.html