Readers Writer Lock
Allows any number of concurrent readers, but only one concurrent writer (And while the "write" lock is taken, no read locks can be obtained either)
Installation
-
Add the dependency to your
shard.yml
:dependencies: rwlock: github: spider-gazelle/readers-writer
-
Run
shards install
Usage
require "rwlock"
balance = 10
rwlock = RWLock.new
# Reading the balance
rwlock.read { puts balance.inspect }
# Modifying
rwlock.write { balance += 10 }
rwlock.synchronize { balance += 10 }
# Reentrant
rwlock.read do
rwlock.write { balance = 100 } if balance > 100
end