所以,我试图解决本质上是生产者-消费者问题,但略有不同。
- “生产者”线程创建令牌并将它们添加到列表中
- “消费者”线程扫描令牌列表并处理它们。
- 作为处理的结果,一些令牌可能会被删除,而其他令牌可能会保留更长时间。
所以主要区别在于生产者的输出可以以任意顺序从列表中删除,不一定是先进先出。
现在,我正在考虑两个线程之间共享的结构的同步。我想要一个无锁结构。我知道无锁队列,但是由于上述原因,队列不太适合用例。仍然可以为此使用队列,如下所示:
- 将令牌出列并处理它
- 如果它不应该被删除,请将其重新加入队列
但是,如果可能的话,我想避免它。理想情况下,我想要的是一个线程可以附加到的无锁单链表,而另一个线程可以从中删除任意元素。你能指出我的一些实现或论文吗?