我想知道 Fober 等人的论文http://nedko.arnaudov.name/soft/L17_Fober.pdf中提出的先进先出队列是否是多消费者并产生先进先出队列。如果不是,哪个是记录最好的多消费者和生产者 FIFO 队列?
谢谢
我想知道 Fober 等人的论文http://nedko.arnaudov.name/soft/L17_Fober.pdf中提出的先进先出队列是否是多消费者并产生先进先出队列。如果不是,哪个是记录最好的多消费者和生产者 FIFO 队列?
谢谢
我没有读过这篇论文,但我在这里做了一个很大的假设:论文使用 CAS(比较和交换)技术来实现并发性。
无锁并不意味着无块。CAS 的使用将停止其他线程,但至少有一个线程将始终“向前”移动。
多个生产者都写入同一个队列——这不是问题。棘手的是多个消费者。如果每个消费者都必须访问数据,那么我将通过多个队列来实现,并且数据将在一个队列中处理后落入下一个队列。如果您的意思是多个消费者通过线程,那么这将适用于上述方法
是的。阅读“3.1 线性化”部分,pop 操作假定可能发生并发出队。这意味着多个线程将能够使用队列。
我不知道“Fober 队列”,但已经将无锁 FIFO 写成环形缓冲区。相对容易的是“无互锁”队列,这意味着读取器不会阻塞写入器,反之亦然,但多个读取器必须序列化,多个写入器也必须序列化。所以它不是完全无锁的,但读者和作者之间仍然没有锁定/阻塞。
也许有更好的方法可以减少锁定,但也许这已经对您有所帮助。