假设 生产环境 者 - 消费者情景 . 我使用了固定容量队列的无锁实现,因此:

  • 队列中可以保留的项目数量有限 .

  • 生产环境 者/消费者可以直接向/从队列中推送/弹出项目而无需持有任何锁定 .

现在,我正在考虑如何同步 生产环境 者和消费者,以便 生产环境 者不忙于尝试推送到完整队列,并且消费者不忙于从空队列中尝试弹出 .

我首先考虑了条件变量 . 但它似乎破坏了使用无锁队列实现的整个目的 .

轮询(使用间隔)是使用无锁队列的唯一合理方法吗?