Sha256: 675926fbaddd29c55520830a618d7c5f6d41f9a96034763e455d84babe6bbfcc
Contents?: true
Size: 1.9 KB
Versions: 3
Compression:
Stored size: 1.9 KB
Contents
= 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 * Fork the project. * Make your feature addition or bug fix. * Add tests for it. This is important so I don't break it in a future version unintentionally. * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull) * Send me a pull request. Bonus points for topic branches. == Authors * Ryan LeCompte == Credits * Mike Perham (inspired from ThreadSafety module in https://github.com/mperham/dalli) == Copyright Copyright (c) 2011 Ryan LeCompte. See LICENSE for further details.
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
synchronizable-0.0.4 | README.rdoc |
synchronizable-0.0.3 | README.rdoc |
synchronizable-0.0.2 | README.rdoc |