#lock #system #separate #waiting #request #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

#8 in #separate

Download history 15/week @ 2023-12-20 4/week @ 2023-12-27 4/week @ 2024-01-03 16/week @ 2024-01-10 7/week @ 2024-01-17 6/week @ 2024-01-24 4/week @ 2024-02-07 21/week @ 2024-02-14 42/week @ 2024-02-21 134/week @ 2024-02-28 25/week @ 2024-03-06 23/week @ 2024-03-13 32/week @ 2024-03-20 46/week @ 2024-03-27 72/week @ 2024-04-03

177 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