#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

#9 in #separate

Download history 9/week @ 2023-11-27 6/week @ 2023-12-04 9/week @ 2023-12-11 17/week @ 2023-12-18 7/week @ 2023-12-25 18/week @ 2024-01-08 7/week @ 2024-01-15 8/week @ 2024-01-22 14/week @ 2024-02-12 36/week @ 2024-02-19 130/week @ 2024-02-26 38/week @ 2024-03-04 23/week @ 2024-03-11

229 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