我正在尝试从这里实现 Michael-Scott FIFO 队列。我无法为 ABA 问题实施他们的解决方案。我得到这个错误。
error: incompatible type for argument 1 of '__sync_val_compare_and_swap'
作为参考,我正在使用 linux 机器在英特尔架构上编译它。如果您需要有关我的设置的更多信息,请询问。
似乎sync_val_CAS
最多只能处理 32 位值。因此,当我删除他们用于消除 ABA 问题的计数器时,一切都编译并运行良好。
有人知道我应该在这里使用的相关 64 位 CAS 指令吗?
作为另一个问题,是否有更好(更快)的无锁 fifo 队列实现?我遇到了Nir Shavit 等人,这似乎很有趣。我想知道其他人是否看到过类似的努力?谢谢。