Module: ThreadSafe::Util::CheapLockable

Extended by:
Volatile
Included in:
AtomicReferenceCacheBackend::Node
Defined in:
lib/thread_safe/util/cheap_lockable.rb

Overview

Provides a cheapest possible (mainly in terms of memory usage) +Mutex+ with the +ConditionVariable+ bundled in.

Usage: class A include CheapLockable

def do_exlusively
  cheap_synchronize { yield }
end

def wait_for_something
  cheap_synchronize do
    cheap_wait until resource_available?
    do_something
    cheap_broadcast # wake up others
  end
end

end

Class Method Summary collapse

Class Method Details

.attr_volatile(*attr_names) ⇒ Object Originally defined in module Volatile

Provides +volatile+ (in the JVM's sense) attribute accessors implemented atop of the +AtomicReference+s.

Usage: class Foo extend ThreadSafe::Util::Volatile attr_volatile :foo, :bar

def initialize(bar)
  super() # must super() into parent initializers before using the volatile attribute accessors
  self.bar = bar
end

def hello
  my_foo = foo # volatile read
  self.foo = 1 # volatile write
  cas_foo(1, 2) # => true | a strong CAS
end

end