| Crates.io | widerwlock |
| lib.rs | widerwlock |
| version | 0.5.0 |
| created_at | 2018-11-12 16:11:35.72035+00 |
| updated_at | 2018-11-12 16:11:35.72035+00 |
| description | A partitioned read-write lock optimized for many parallel readers. |
| homepage | https://github.com/mohrezaei/widerwlock |
| repository | https://github.com/mohrezaei/widerwlock |
| max_upload_size | |
| id | 96281 |
| size | 44,331 |
This crate implements an enterprise-grade read-write lock, typically used for large data structures.
The lock is internally 8x partitioned, which allows it to scale much better with a large number of readers,
as compared to std::sync::RwLock.
Even though this is a large lock, it has better performance characteristic for uncontended single reader
or single writer lock than std::sync::RwLock.
The lock uses a contiguous 576 byte heap area to store its state, so it's not a light-weight lock. If you have a complex data structure that holds a GB of data, this would be an appropriate lock.
An interesting feature of this lock, beside its performance, is its Read->Write upgrade mechanics. The ReadGuard allows an
upgrade to a write-lock and informs the user whether the upgrade succeeded atomically or not. This enables
the following pattern:
Read to see if the data structure is in a particular state (e.g. contains a value).
Add this to your Cargo.toml:
[dependencies]
widerwlock = "0.5"
and this to your crate root:
extern crate widerwlock;
The minimum supported Rust version is 1.28 due to use of allocator api.