当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust PoisonError用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 Struct std::sync::PoisonError。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。