當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。