生产者-消费者队列 - std::queue 或用户编写的链接列表

Producer-consumer queue- std::queue or user-written linked-list?

本文关键字:链接 列表 用户 queue 消费者 队列 std 生产者      更新时间:2023-10-16

我遇到了以下详细介绍生产者消费者无锁队列的文章:

C++ 锁定免费生产者/消费者队列

它使用自定义编写的链表。当人们可以使用std::queue并在数据结构周围编写一些访问器包装器时,编写链表的目的是什么?

不可能设计一个push_backpop_front不会同时修改大小成员的std::list。 如果有两个线程同时调用它们,它们可能会损坏列表。 您可以使用锁编写包装器访问器以使其安全。 这违背了无锁结构的目标。 std::dequepush_backpop_front都需要修改节点指针的内部"向量",如果它们同时被两个不同的线程调用,它们会再次损坏双端。

可以轻松编写类似列表或循环缓冲区的无锁生产者/消费者队列,但没有标准的C++容器可以满足条件。