1

所以,我试图解决本质上是生产者-消费者问题,但略有不同。

  • “生产者”线程创建令牌并将它们添加到列表中
  • “消费者”线程扫描令牌列表并处理它们。
  • 作为处理的结果,一些令牌可能会被删除,而其他令牌可能会保留更长时间。

所以主要区别在于生产者的输出可以以任意顺序从列表中删除,不一定是先进先出。

现在,我正在考虑两个线程之间共享的结构的同步。我想要一个无锁结构。我知道无锁队列,但是由于上述原因,队列不太适合用例。仍然可以为此使用队列,如下所示:

  • 将令牌出列并处理它
  • 如果它不应该被删除,请将其重新加入队列

但是,如果可能的话,我想避免它。理想情况下,我想要的是一个线程可以附加到的无锁单链表,而另一个线程可以从中删除任意元素。你能指出我的一些实现或论文吗?

4

0 回答 0