#panic #sync #error #mutex #methods #poison #primitive

sync_panic

在毒化情况下,同步原语类型的方法会引发恐慌而不是返回错误

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2019 年 2 月 7 日

#112 in #panic


sys_util 中使用

BSD-3-Clause

9KB
95

在毒化情况下,同步原语类型的方法会引发恐慌而不是返回错误。

此 crate 中的 Mutex/Condvar 类型包装了标准库版本,并具有相同的方法,但它们在标准库会返回错误的地方引发恐慌。此 API 约定了我们围绕 crosvm 中的毒化互斥锁的错误处理策略。

  • Crosvm 版本使用 panic=abort 构建,因此不会发生毒化。在持有互斥锁(或任何时候)时引发恐慌会导致整个进程崩溃。因此,我们希望代码不必考虑毒化的可能性。

  • 我们可以要求开发者始终在标准库互斥锁上编写 .lock().unwrap()。然而,我们希望贬低 unwrap 的使用。允许 unwrap 但仅限于互斥锁锁定结果会使事情变得混乱。在代码审查期间,可能并不总是很明显特定 unwrap 是在解包互斥锁锁定结果还是其他应更原则性地处理的不同错误。

开发者可以自由地在 crosvm 的任何地方使用此 crate 中定义的类型,否则他们将使用 std::sync 中的相应类型。

无运行时依赖项