class Isochron::Procedure

Public Class Methods

new(proc) click to toggle source
# File lib/isochron.rb, line 9
def initialize(proc)
  @proc = proc
  @sem = Mutex.new
  @done = false
  @result = nil
end

Public Instance Methods

call() click to toggle source
# File lib/isochron.rb, line 16
def call
  return @result if @done

  @sem.synchronize do
    if !@done
      @result = @proc.call
      @done = true
    end
  end

  @result
end