Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
mutant
Ruby
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
README.md

README.md

Mutant

The aim of Mutant is to provide a threadsafe layer on top of various Ruby collections by introducing an object accessor that provides a read-only immutable copy of any given object.

Mutant is ideal in situations where updating an in-memeory object can take a while, but using a read-only copy of the object is sufficient.

The performance cost of using Mutant will only really be noticed when the object is expensive to 'dup'. There will also be a slight performance hit as Mutant uses a Mutex to ensure thread-safety, which is common in most threadsafe libraries.

Example:

class Counter

  attr_reader :counter

  def initialize(start=0)
    @counter = start
  end

  def increment(size=1)
    @counter = @counter + size
  end

end

counter = Mutant::Hash.new

counter[:key] = Counter.new
t = Thread.new do 
  100.times do
    Thread.new do
      counter[:key].update(&:increment)
    end
  end
end

t.join
Something went wrong with that request. Please try again.