使用条件变量的最经典的场景就是生产者和消费者
consumers在进行一次Q判断为空的情况,让线程休息一下,这里我们修改一下consumers().
这里我们添加这行代码
让线程休息5秒
但是我们仔细想想,这样合理吗,可能有更好的解决方案,比如生产者生产出来一个产品,再通知消费者,不就可以解决消费者循环等待的问题了嘛。
生产者生产出来一个产品,再通知消费者,不就可以解决消费者循环等待的问题。利用这个思想代码就可以写成这样
这里是引入条件变量的头文件和创建一个全局的条件变量
这里在生产者生产了一个产品后,使用cond.notify_one(),来激活一个消费者。如果有多个消费者可以notify_all()
消费者要一直wait(),直到生产者告诉它产品生产好了。
所以我们还要对cond.wait(locker)进行修改
今天的文章 条件变量的作用(条件变量使用场景)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/47374.html