本文简要介绍rust语言中 std::sync::RwLock.read
的用法。
用法
pub fn read(&self) -> LockResult<RwLockReadGuard<'_, T>>
用共享读访问锁定这个 rwlock,阻塞当前线程,直到它可以被获取。
调用线程将被阻塞,直到没有更多的写入者持有锁。此方法返回时,当前锁内可能还有其他读取器。对于有争议的读取器或写入器是否首先获取锁的顺序,此方法不提供任何保证。
返回一个 RAII 守卫,一旦它被删除,它将释放该线程的共享访问。
错误
如果RwLock中毒,该函数将返回错误。每当写入者在持有独占锁时发生Panics时,RwLock就会中毒。获取锁后会立即发生故障。
Panics
如果当前线程已持有锁,则调用此函数时可能会出现紧急情况。
例子
use std::sync::{Arc, RwLock};
use std::thread;
let lock = Arc::new(RwLock::new(1));
let c_lock = Arc::clone(&lock);
let n = lock.read().unwrap();
assert_eq!(*n, 1);
thread::spawn(move || {
let r = c_lock.read();
assert!(r.is_ok());
}).join().unwrap();
相关用法
- Rust RwLock.try_write用法及代码示例
- Rust RwLock.into_inner用法及代码示例
- Rust RwLock.try_read用法及代码示例
- Rust RwLock.new用法及代码示例
- Rust RwLock.write用法及代码示例
- Rust RwLock.is_poisoned用法及代码示例
- Rust RwLock.get_mut用法及代码示例
- Rust RwLock用法及代码示例
- Rust Result.unwrap_or_else用法及代码示例
- Rust RefCell.try_borrow_unguarded用法及代码示例
- Rust Ref.map用法及代码示例
- Rust RefMut.leak用法及代码示例
- Rust Ref.filter_map用法及代码示例
- Rust RefCell.replace_with用法及代码示例
- Rust Receiver.recv用法及代码示例
- Rust Range.is_empty用法及代码示例
- Rust Result.as_deref_mut用法及代码示例
- Rust Result.unwrap_or_default用法及代码示例
- Rust Rc.increment_strong_count用法及代码示例
- Rust Result.as_mut用法及代码示例
- Rust Result.map_or用法及代码示例
- Rust Result.err用法及代码示例
- Rust RangeTo用法及代码示例
- Rust Receiver.recv_timeout用法及代码示例
- Rust RangeInclusive.start用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::sync::RwLock.read。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。