1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2019 年 2 月 7 日 |
---|
#112 in #panic
在 sys_util 中使用
9KB
95 行
在毒化情况下,同步原语类型的方法会引发恐慌而不是返回错误。
此 crate 中的 Mutex/Condvar 类型包装了标准库版本,并具有相同的方法,但它们在标准库会返回错误的地方引发恐慌。此 API 约定了我们围绕 crosvm 中的毒化互斥锁的错误处理策略。
-
Crosvm 版本使用 panic=abort 构建,因此不会发生毒化。在持有互斥锁(或任何时候)时引发恐慌会导致整个进程崩溃。因此,我们希望代码不必考虑毒化的可能性。
-
我们可以要求开发者始终在标准库互斥锁上编写
.lock().unwrap()
。然而,我们希望贬低 unwrap 的使用。允许 unwrap 但仅限于互斥锁锁定结果会使事情变得混乱。在代码审查期间,可能并不总是很明显特定 unwrap 是在解包互斥锁锁定结果还是其他应更原则性地处理的不同错误。
开发者可以自由地在 crosvm 的任何地方使用此 crate 中定义的类型,否则他们将使用 std::sync 中的相应类型。