2025年c++ 条件变量 虚假唤醒(c++条件变量wait_for)

c++ 条件变量 虚假唤醒(c++条件变量wait_for)当生产者的数量 PRODUCTER NUM 大于 1 时 无论是使用 notify one 或者是 notify all 都会发生虚假 唤醒 当多个生产者使用 notify one 时 多个线程被唤醒 有可能其中一个处理的特别快 将所有的数据都处理完毕 那么接下来被唤醒 的线程都无数据可处理 当使用 notify all 通知消费线程时 会发生虚假 唤醒 会有多个消费者线程收到信号被唤醒

大家好,我是讯享网,很高兴认识大家。

当生产者的数量(PRODUCTER_NUM)大于1时,无论是使用notify_one,或者是notify_all都会发生虚假唤醒,当多个生产者使用notify_one时,多个线程被唤醒,有可能其中一个处理的特别快,将所有的数据都处理完毕,那么接下来被唤醒的线程都无数据可处理。当使用notify_all通知消费线程时,会发生虚假唤醒,会有多个消费者线程收到信号被唤醒,当一个线程被唤醒之前,可能其他线程先被唤醒先持有锁,将产品消耗掉。多个线程在等待同一个条件变量时,其中一个线程被误唤醒,导致其他线程也被唤醒


讯享网

小讯
上一篇 2025-04-28 14:02
下一篇 2025-05-28 15:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/205687.html