2010-06-05 78 views

回答

1

是的。阅读'3.1 Linearizability'部分 pop操作假定可能发生并发出队。这意味着多个线程将能够使用队列。

0

我不知道“Fober队列”,但已经写了无锁的FIFO作为环缓冲区。 可能相对容易的是一个“无内联锁”队列,这意味着读者不会阻止编写者,反之亦然,但是多个读者必须被序列化并且多重编写者也必须是。 所以它不是无锁的,但读者和作者之间仍然没有锁定/阻塞。

也许有更好的方法,甚至允许更少的锁定,但也许这将已经帮助你。

1

我还没有看过论文,但我在这里做了一个大的假设:本文使用CAS(比较和交换)技术来实现并发。

锁定免费并不意味着无障碍。 CAS的使用会阻止其他线程,但至少有一个线程会随时“前进”。

多个生产者都写入相同的队列 - 这不是问题。技巧是多个消费者。如果每个消费者都必须访问数据,那么我会通过多个队列来实现这些数据,并且数据将在一个队列中处理完毕后进入下一个队列。如果您的意思是多个消费者通过线程,那么这将工作在上述方法

相关问题