有哪些工具可以帮助人们尝试弱序并发? 也就是说,在自学部分围栏、弱原子、获取/使用/释放语义、无锁算法等方面可以玩什么沙盒?
一个人想要的工具或沙箱将锻炼和强调一个弱有序的线程算法,暴露出算法理论上可能失败的各种方式。例如,在 x86 上物理运行,该工具仍然能够暴露 ARM 类型的故障。
一个开源工具会更好。请指教。
参考:
- C++11 标准草案(PDF,见第 1、29 和 30 条);
- 汉斯-J。Boehm 的主题概述;
- McKenney、Boehm 和 Crowl 关于这个主题;
- GCC 关于该主题的发展说明;
- Linux 内核关于该主题的注释;
- Stackoverflow 上的相关问题和答案
- 另一个问题,这个比较栅栏和原子的问题;
- Cppmem(根据@KerrekSB 的建议);
- Cppmem 的帮助页面;
- Spin(根据@JohnZwinck 的建议,用于分析并发系统的逻辑一致性的工具)。
(这些参考文献面向 C++11,因为这正是我接触该主题的方式。但是,据我所知,非 C++ 的答案可能是最好的,因此请随意将您的答案扩展到 C++ 之外,如您所见合身。)