2 个不稳定版本
0.2.0 | 2022 年 12 月 21 日 |
---|---|
0.1.0 | 2022 年 12 月 21 日 |
#1039 在 并发
14KB
289 行
Rust 中的队列读写锁实现
这种读写锁使用票据互斥锁作为等待队列,类似于 FIFO。它允许避免读者或写者的不公平和饥饿,这是通用读写锁(读优先或写优先)的常见问题
示例
extern crate qrwlock;
use std::{sync::Arc, thread};
fn main() {
let counter = Arc::new(qrwlock::RwLock::new(0));
let thread = thread::spawn({
let counter = counter.clone();
move || {
for _ in 0..1000 {
*counter.write() += 1;
}
}
});
for _ in 0..1000 {
println!("read {}", *counter.read());
}
thread.join().unwrap();
assert_eq!(*counter.read(), 1000);
}
许可证
qrwlock
根据 MIT 许可证分发,(见 LICENSE
)。
lib.rs
:
此包提供公平的读写锁,不易发生读者或写者饥饿
依赖项
~190KB