本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。