这需要无锁,因为它必须在 SMP 系统的中断处理程序中运行。我不能拿锁。
我有一个包含一些值的连续数组。此数组中的某些条目是“空闲的”,它们未被占用。我想列出这些条目,以便我可以快速分配一个。但是,我有时不得不分配一个任意条目。
因此,我认为以下是一种不错的处理方式:连续数组不仅保存值,还保存左右指针,从而形成双端队列。只有自由值具有有效的左/右指针。我可以快速访问任意节点,因为它只是对双端队列的索引访问。
现在,问题的关键是:是否有一个不错的无锁双端队列算法,它相对有效并且可以支持删除任意节点?