3 releases (breaking)
0.3.0 | Jan 25, 2021 |
---|---|
0.2.0 | Mar 4, 2017 |
0.1.0 | Mar 3, 2017 |
#5 in #separate
63 downloads per month
11KB
256 lines
Ticketed lock.
Ticketed lock is similar to RwLock, except that the acquisition of the lock is split:
- obtaining a ticket, which has to be done on the same thread as the locked storage
- waiting on a ticket, which puts the current thread to sleep until the ticket is due. That moment comes when all the previous tickets are processed.
- working with the data behind a read/lock guard
- when the guard is freed, it allows the following tickets to become active
A ticket can be moved between threads or even just lost.
Consecutive read-only tickets do not guarantee a particular lock order.
All the ticket counting is done based on Arc
primitives, and the only unsafe code that this library has is for accessing the actual data behind a guard.
Dependencies
~220KB