我已经使用http://www.research.ibm.com/people/m/michael/ieeetpds-2004.pdf中解释的危险指针方法实现了一个无锁队列,使用 GCC CAS 指令用于实现,pthread 本地存储用于线程本地结构。我现在正在尝试评估我编写的代码的性能,特别是我试图在此实现与使用锁(pthread 互斥锁)来保护队列的实现之间进行比较。
我在这里问这个问题是因为我尝试将它与“锁定”队列进行比较,我发现这在无锁实现方面具有更好的性能。我尝试的唯一测试是在 4 核 x86_64 机器上创建 4 个线程,在队列上执行 10.000.000 次随机操作,它比无锁版本快得多。
我想知道您是否可以建议我遵循的方法,即我必须在队列上测试什么样的操作以及我可以使用什么样的工具来查看我的无锁代码在哪里浪费时间。
我还想了解无锁队列的性能是否可能仅仅因为 4 个线程不足以看到重大改进......
谢谢