18 releases
0.2.6 | Mar 25, 2024 |
---|---|
0.2.4 | Aug 21, 2022 |
0.2.3 | Apr 19, 2019 |
0.2.2 | Mar 8, 2019 |
0.0.5 | Mar 26, 2017 |
#146 in Concurrency
3,823 downloads per month
Used in 53 crates
(3 directly)
54KB
1K
SLoC
Qutex
Non-thread-blocking queue-backed data locks based on Rust futures.
Includes futures capable versions of Mutex
and RwLock
.
Documentation
Example
Cargo.toml
:
[dependencies]
qutex = "0.2"
main.rs
:
extern crate qutex;
extern crate futures;
use std::thread;
use futures::Future;
use qutex::Qutex;
fn main() {
let thread_count = 100;
let mut threads = Vec::with_capacity(thread_count);
let start_val = 0;
let qutex = Qutex::new(start_val);
for _ in 0..thread_count {
let future_val = qutex.clone().lock();
let future_add = future_val.map(|mut val| {
*val += 1;
});
threads.push(thread::spawn(|| {
future_add.wait().unwrap();
}));
}
for thread in threads {
thread.join().unwrap();
}
let val = qutex.lock().wait().unwrap();
assert_eq!(*val, start_val + thread_count);
println!("Qutex final value: {}", *val);
}
Dependencies
~155–315KB