#lock #atomic #rwlock #locking

rw_lease

Fast Reader-Writer lock with reader draining support. Based on a single (parameterisable) atomic usize.

1 unstable release

0.1.0 Jul 24, 2020

#36 in #rwlock

MPL-2.0 license

21KB
425 lines

rw_lease

License Package Documentation

Fast Reader-Writer lock with reader draining support. Based on a single (parameterisable) atomic usize.

Notes:

  • Steals the high bit for the writer lock.
  • Designed for low contention, mostly-read workloads.
  • Write locking requires waiting for readers to drop their locks.

Benchmarks

There are benchmarks, which you can and should run. Here are some numbers from my 2015 macbook pro on an AtomicUsize (the default):

Benchmark Mutex RwLock RWLease
Create 110 107 1
Uncontended Reads 330731 (1.4) 417664 (1.77) 235656 (1)
Contended Reads 1140321 (1) 2367186 (2.08) 1488557 (1.31)

Notes: measurements in nanoseconds, parens = normalised to shortest run.

We haven't spent terribly long optimising the code, there may be some wins left to gain.

Copyright (c) 2020 James Laver, rw_lease contributors.

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

Dependencies

~18KB