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


Rust Mutex.lock用法及代碼示例


本文簡要介紹rust語言中 std::sync::Mutex.lock 的用法。

用法

pub fn lock(&self) -> LockResult<MutexGuard<'_, T>>

獲取一個互斥體,阻塞當前線程,直到它能夠這樣做。

此函數將阻塞本地線程,直到它可以獲取互斥體。返回時,線程是唯一持有鎖的線程。返回一個 RAII 守衛以允許鎖定的範圍解鎖。當守衛超出範圍時,互斥鎖將被解鎖。

在已經持有鎖的線程中鎖定互斥鎖的確切行為未指定。但是,此函數不會在第二次調用時返回(例如,它可能會出現Panics或死鎖)。

錯誤

如果此互斥鎖的另一個用戶在持有互斥鎖時發生Panics,則一旦獲取互斥鎖,此調用將返回錯誤。

Panics

如果當前線程已持有鎖,則調用此函數時可能會出現緊急情況。

例子

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

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

thread::spawn(move || {
    *c_mutex.lock().unwrap() = 10;
}).join().expect("thread::spawn failed");
assert_eq!(*mutex.lock().unwrap(), 10);

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::sync::Mutex.lock。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。