有哪些工具可以帮助人们尝试弱有序并发?也就是说,在自学部分围栏、弱原子、获取/使用/释放语义、锁的同时可以在什么沙箱中进行游戏-免费算法之类的?
人们想要的工具或沙箱会锻炼和强调弱有序的线程算法,暴露算法理论上可能失败的各种方式。例如,在物理上运行在 x86 上时,该工具仍然能够暴露 ARM 类型的故障。
最好使用开源工具。请指教。
引用文献:
- the C++11 draft standard (PDF,参见第 1、29 和 30 条);
- Hans-J. Boehm's overview of the subject ;
- McKenney, Boehm and Crowl on the subject ;
- GCC's developmental notes on the subject ;
- the Linux kernel's notes on the subject ;
- a related question with answers here on Stackoverflow
- another question, this one comparing fences against atomics ;
- Cppmem (根据@KerrekSB的建议);
- Cppmem's help page ;
- Spin (根据 @JohnZwinck 的建议,用于分析并发系统逻辑一致性的工具)。
(引用文献面向 C++11,因为这就是我碰巧处理该主题的方式。但是,据我所知,非 C++ 答案可能是最好的,因此请随意将您的答案扩展到 C++ 之外如您认为合适。)
最佳答案
这比您的问题直接提出的问题要笼统得多,但请看一下“Spin”,它是并发系统的“模型检查器”。在线手册在这里:http://spinroot.com/spin/Man/Manual.html
你可能会觉得它有点“老派”的感觉,但我认为它没有理由不适合你感兴趣的工作。但是,由于它很一般,你可以需要做一些工作来教会工具有关问题空间的信息。好消息是它是独立于平台的。坏消息是您可能需要显式地对每个计算机架构进行建模(例如,Spin 本质上并不了解 ARM 与 x86 的保证)。但也许其中一些工作已经在其他地方完成(我没有检查),和/或者您可以分享您所做的工作,以便其他人受益。毕竟,该工具是开源的。
关于concurrency - 实验弱有序并发的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14161049/