0.0
No commit activity in last 3 years
No release in over 3 years
Synchronizable is a generic way to provide per-object thread safety
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 2.5.0
 Project Readme

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¶ ↑

Copyright © 2011 Ryan LeCompte. See LICENSE for further details.