本文簡要介紹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 Mutex.new用法及代碼示例
- Rust Mutex.get_mut用法及代碼示例
- Rust Mutex.into_inner用法及代碼示例
- Rust Mutex.is_poisoned用法及代碼示例
- Rust Mutex.unlock用法及代碼示例
- Rust Mutex.try_lock用法及代碼示例
- Rust Mutex用法及代碼示例
- Rust MulAssign.mul_assign用法及代碼示例
- Rust MulAssign用法及代碼示例
- Rust Mul用法及代碼示例
- Rust Mul.mul用法及代碼示例
- Rust MaybeUninit.assume_init_mut用法及代碼示例
- Rust MetadataExt.st_ctime_nsec用法及代碼示例
- Rust MetadataExt.mtime_nsec用法及代碼示例
- Rust MetadataExt.nlink用法及代碼示例
- Rust MetadataExt.st_atime用法及代碼示例
- Rust MaybeUninit.as_ptr用法及代碼示例
- Rust MetadataExt.uid用法及代碼示例
- Rust MetadataExt.st_ino用法及代碼示例
- Rust MaybeUninit.write_slice用法及代碼示例
- Rust MetadataExt.st_mode用法及代碼示例
- Rust MetadataExt.creation_time用法及代碼示例
- Rust Metadata.is_file用法及代碼示例
- Rust MetadataExt.st_rdev用法及代碼示例
- Rust MetadataExt.blocks用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::sync::Mutex.lock。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。