Synchronizable is a generic way to provide per-object thread safety
MIT License
= Synchronizable
Synchronizable is a gem that provides an easy module-based mechanism for making any object thread-safe with an instance-level lock. This gem was originally inspired from Mike Perham's dalli gem, which provides a ThreadSafe module for his memcached client. However, that solution is not currently generic. This gem attempts to provide a generic solution that can work with any object (including classes/modules) in your system.
== Installation
Synchronizable is available as a RubyGem:
gem install synchronizable
== Examples
=== Making an instance synchronizable
class Foo
def bar
end
def baz
end
end
foo = Foo.new
# the foo instance now has all methods synchronized / thread-safe
foo.extend(Synchronizable)
=== Making a class synchronizable
# note that classes are objects in Ruby and can also be synchronized
class Bar
def self.foo
end
end
# only class/singleton methods will become synchronized
Bar.extend(Synchronizable)
=== Utilizing the #synchronize method to protect a block
# the synchronize method takes a block and executes it
# in a thread-safe manner
s = "this is a test"
s.extend(Synchronizable)
s.synchronize do
s.gsub!('i', 'x')
s.slice!(0, 5)
end
== Note on Patches/Pull Requests
== Authors
== Credits
== Copyright
Copyright (c) 2011 Ryan LeCompte. See LICENSE for further details.