用于尝试弱有序并发的工具

时间:2013-01-04 16:34:54

标签: concurrency c++11 lock-free atomicity formal-verification

有哪些工具可以帮助人们尝试弱有序并发?也就是说,在教会自己关于部分围栏,弱原子,获取/消费/释放语义,锁定的沙盒中可以玩什么 - 免费算法等?

人们想要的工具或沙箱会运用并强调一个弱有序的线程算法,暴露算法理论上可能失败的各种方式。例如,在x86上物理运行,该工具仍然可以暴露ARM类型的故障。

首选开源工具。请指教。

参考文献:

(这些引用是面向C ++ 11的,因为这就是我碰巧接近主题的方法。但是,据我所知,非C ++的答案可能是最好的,所以请随意扩展你的答案超越C ++如你所愿。)

2 个答案:

答案 0 :(得分:3)

这比你的问题直接要求的要宽泛一些,但是看看“旋转”,即并发系统的“模型检查器”。在线手册如下:http://spinroot.com/spin/Man/Manual.html

你可能会觉得它有点“老派”的感觉,但我认为没有理由不适合你感兴趣的工作。但是,由于它很普遍,你可能会需要做一些工作来教授关于问题空间的工具。好消息是它与平台无关。坏消息是你可能需要明确地为每个计算机体系结构建模(例如,Spin本身并不知道ARM与x86的保证)。但也许其他一些工作已在其他地方完成(我没有检查),和/或你可以分享你做的事情,以便其他人可能受益。毕竟,这个工具是开源的。

答案 1 :(得分:1)

您可能有兴趣查看http://www.cprover.org/wmm/并按照其中的链接查看有关弱记忆的工具和相应的论文,特别是CAV 2013论文Partial Orders for Efficient BMC of Concurrent Software和CAV 2014论文{{ 3}}可能是一个很好的起点。您还可以在那里找到许多真实的示例代码和基准。