#lock #system #waiting #request #separate #ticketed

ticketed_lock

Ticketed lock system - allows one to separate lock request from the actual waiting

3 releases (breaking)

0.3.0 Jan 25, 2021
0.2.0 Mar 4, 2017
0.1.0 Mar 3, 2017

#5 in #separate

Download history 21/week @ 2024-07-20 52/week @ 2024-07-27 14/week @ 2024-08-03 31/week @ 2024-08-10 18/week @ 2024-08-17 14/week @ 2024-08-24 19/week @ 2024-08-31 23/week @ 2024-09-07 23/week @ 2024-09-14 62/week @ 2024-09-21 71/week @ 2024-09-28 23/week @ 2024-10-05 13/week @ 2024-10-12 14/week @ 2024-10-19 20/week @ 2024-10-26 15/week @ 2024-11-02

63 downloads per month

Apache-2.0

11KB
256 lines

Ticketed lock.

Ticketed lock is similar to RwLock, except that the acquisition of the lock is split:

  1. obtaining a ticket, which has to be done on the same thread as the locked storage
  2. 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.
  3. working with the data behind a read/lock guard
  4. 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