Shuttle
a day ago
- Shuttle库是由前AWS工程师开发的并发验证工具,旨在简化并发代码的测试工作。
- 它通过采用随机探索的受控线程调度,解决了并发错误复现和捕获的难题。
- 该工具为标准库的并发原语提供了即插即用的替代方案,并在可操纵调度的测试框架中运行测试。
- 由于排列数量呈阶乘增长,穷举探索(如Loom中的方法)并不总是可行;随机探索可处理复杂情况且支持并行化。
- 一个实际示例展示了如何捕获经典并发错误(信号量中的竞态条件),并通过乐观并发与比较并交换机制进行修复。
- 集成过程涉及条件编译和重导出,以用shuttle::sync替代std::sync原语。
- 该库已在AWS S3的关键软件中成功应用,并在SOSP '21大会上获得了最佳论文奖。