1个不稳定版本
0.1.99-hack.0 | 2022年12月6日 |
---|
#17 in #would
10KB
128 行
在毒化情况下,同步原语类型的方法会panic而不是返回错误。
此crate中的Mutex/Condvar类型封装了标准库版本,并反映了相同的方法,除了在标准库会返回Error的地方它们会panic。此API将crosvm中对毒化互斥锁的错误处理策略进行了规范化。
-
Crosvm版本使用panic=abort构建,因此不会发生毒化。在持有互斥锁(或任何时候)时panic会将整个进程终止。因此,我们希望代码无需考虑毒化的可能性。
-
我们可以要求开发者始终在标准库互斥锁上编写
.lock().unwrap()
。然而,我们希望贬低unwrap的使用。允许unwrap但只允许在互斥锁锁结果上使用会令人困惑。在代码审查期间,可能并不总是明显地知道某个特定的unwrap是在解包互斥锁结果还是应该以更原则的方式处理的不同错误。
开发者可以在crosvm的任何地方使用此crate中定义的类型,而不会使用std::sync中的对应类型。