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


Rust Mutex.try_lock用法及代码示例


本文简要介绍rust语言中 std::sync::Mutex.try_lock 的用法。

用法

pub fn try_lock(&self) -> TryLockResult<MutexGuard<'_, T>>

尝试获取此锁。

如果此时无法获取锁,则返回 Err 。否则,返回一个 RAII 守卫。当防护装置掉落时,锁将被解锁。

此函数不会阻塞。

错误

如果此互斥锁的另一个用户在持有互斥锁时发生Panics,则此调用将返回 Poisoned 错误,如果否则会获取互斥锁。

如果互斥锁由于已被锁定而无法获取,则此调用将返回 WouldBlock 错误。

例子

use std::sync::{Arc, Mutex};
use std::thread;

let mutex = Arc::new(Mutex::new(0));
let c_mutex = Arc::clone(&mutex);

thread::spawn(move || {
    let mut lock = c_mutex.try_lock();
    if let Ok(ref mut mutex) = lock {
        **mutex = 10;
    } else {
        println!("try_lock failed");
    }
}).join().expect("thread::spawn failed");
assert_eq!(*mutex.lock().unwrap(), 10);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::sync::Mutex.try_lock。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。