(八)基于条件变量的有锁图像队列实现

0 阅读1分钟

对有锁图像队列+条件变量+生产者消费者的综合实现:

  • 实现了有锁队列(mutex + condition_variable)
  • 实现了生产者队列
  • 实现了消费者队列

image.png

image.png

image.png

image.png

核心知识点

  1. std::mutex保护队列,同一时间只有一个线程能修改。

  2. std::condition_variable

  • 队列空 → 消费者等待
  • 队列满 → 生产者等待
  • 状态变化 → notify_one () 唤醒对方
  1. unique_lock配合条件变量使用,能自动解锁 / 上锁,比 lock_guard 更灵活。

  2. 生产者消费者模型

  • 生产 → 放入队列 → 唤醒消费者
  • 消费 → 取出数据 → 唤醒生产者