SyncHash
A thread-safe hash. We use a sync object instead of a mutex, because it is re-entrant. An exclusive lock is needed when writing, a shared lock IS NEEDED when reading.
Uses the delegator pattern to allow for multiple implementations!
hash = SyncHash.new hash = SyncHash.new(Hash.new) # Delegates
Design
This class uses the delegator pattern. However we don‘t use Ruby‘s delegation facilities, they are more general and powerful than we need here (and slower). Instead a custom (but simple) solution is used.
Usage
hash = SyncHash.new hash = SyncHash.new(Hash.new) # Delegates
Methods
new
Classes and Modules
Module SyncHash::DelegatorModule SyncHash::Inheritor
Attributes
[RW] | delegate |
Public Class methods
[ + ]
# File lib/more/facets/synchash.rb, line 67 def initialize(delegate=nil) @delegate = delegate @sync = ::Sync.new if delegate self.extend Delegator else self.extend Inheritor end end