本文簡要介紹rust語言中 Struct std::sync::PoisonError
的用法。
用法
pub struct PoisonError<T> { /* fields omitted */ }
一種可以在獲取鎖時返回的錯誤。
每當線程在持有鎖時失敗時, Mutex
es 和 RwLock
s 都會中毒。每個鎖都記錄了鎖中毒時的精確語義,但是一旦鎖中毒,那麽所有未來的獲取都將返回此錯誤。
例子
use std::sync::{Arc, Mutex};
use std::thread;
let mutex = Arc::new(Mutex::new(1));
// poison the mutex
let c_mutex = Arc::clone(&mutex);
let _ = thread::spawn(move || {
let mut data = c_mutex.lock().unwrap();
*data = 2;
panic!();
}).join();
match mutex.lock() {
Ok(_) => unreachable!(),
Err(p_err) => {
let data = p_err.get_ref();
println!("recovered: {}", data);
}
};
相關用法
- Rust PoisonError.into_inner用法及代碼示例
- Rust Pointer用法及代碼示例
- Rust Poll.map用法及代碼示例
- Rust Poll.map_ok用法及代碼示例
- Rust Poll.is_ready用法及代碼示例
- Rust Poll.ready用法及代碼示例
- Rust Poll.is_pending用法及代碼示例
- Rust Poll.map_err用法及代碼示例
- Rust PanicInfo.payload用法及代碼示例
- Rust Path.components用法及代碼示例
- Rust PathBuf.with_capacity用法及代碼示例
- Rust Peekable.peek用法及代碼示例
- Rust Path.is_symlink用法及代碼示例
- Rust Path.canonicalize用法及代碼示例
- Rust PartialOrd.partial_cmp用法及代碼示例
- Rust Path.is_relative用法及代碼示例
- Rust Path.file_stem用法及代碼示例
- Rust PermissionsExt.set_mode用法及代碼示例
- Rust Path.to_string_lossy用法及代碼示例
- Rust Path.display用法及代碼示例
- Rust PathBuf.into_os_string用法及代碼示例
- Rust Peekable.next_if用法及代碼示例
- Rust PanicInfo用法及代碼示例
- Rust PathBuf.pop用法及代碼示例
- Rust Path.ancestors用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Struct std::sync::PoisonError。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。