我使用GCC __sync_xxx_compare_and_swap
原子内置实现了一个无锁队列。现在我想确保我的代码是正确的。所以我为入队和出队启动了多个线程,并试图:
我发现以上两个结果都是正确的,但是如何验证排队顺序与出列顺序完全相同?或者,有没有办法检查我的实现的正确性?
答案 0 :(得分:0)
试试Helgrind: a thread error detector。它是Valgrind的一部分。除了默认选项之外,请务必阅读手册页以获取额外的好处。
至于检查重新订购
当程序退出时,您应该能够在日志文件中匹配队列和队列。
这比在测试期间记录到单个日志文件(受互斥锁保护)更好,因为它避免了同步瓶颈(这会影响线程的动态和可能性)使测试不太相关)