#tracing #locking

hiatus

通过选择特定的执行跟踪来调试并发程序

2 个版本

0.1.1 2020年10月14日
0.1.0 2020年10月14日

#1099 in 并发

Apache-2.0

9KB
54

Hiatus

Hiatus 是一个 Rust 的并发调试库。它允许你在程序中设置断点,以便代码块按照你选择的顺序执行。如果你怀疑某个代码块的特定交织有错误,可以使用 Hiatus 来调用该顺序并确认错误的存在。

API 文档

动机

你沉迷于无懈可击的并发承诺,在你的程序中装饰了类型安全的护身符 —— ArcMutexRwLock 现在感觉像是家一样。你的程序在数十个线程上快速执行,完全不考虑困扰20世纪的竞争条件。你安心地睡在床上,知道一群千禧年研究人员已经审查了你财富所依赖的 unsafe 块。然而...似乎有什么不对劲。你的程序中大量的锁,交织着文件系统写入,变得混乱不堪。随着锁和线程数量的急剧增加,关于你不同数据结构一致性的高级不变量几乎不可能保持。Discord 上的一个用户报告了一个灾难性的崩溃,任何理智和充满爱心的语言设计者都不可能允许这种情况发生。这似乎与你程序中非常特定的事件顺序有关,这是你以前从未考虑过的。在你沮丧加深之前,四位悬浮的灵魂乐手出现在你面前,如同梦境一般,赋予你透视墙壁的能力~

解决方案

请参阅 示例目录,了解如何使用 Hiatus 控制并发执行。

许可证

Apache 2.0

依赖项

~485–800KB
~13K SLoC