Sha256: 061c962c7ac16e955810211b6d475178182eeedafaa91202799c369a11da94cf

Contents?: true

Size: 302 Bytes

Versions: 6

Compression:

Stored size: 302 Bytes

Contents

require "thread"
module MutexCode #:nodoc:
  def semaphore
    @semaphore ||= Mutex.new
  end

  def synchronized
    semaphore.synchronize do
      yield
    end
  end

  def is_blocked?
    semaphore.locked?
  end

  def only_once
    synchronized do
      yield
    end unless is_blocked?
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
contextr-1.0.3 lib/contextr/modules/mutex_code.rb
contextr-0.1.1 lib/contextr/modules/mutex_code.rb
contextr-0.1.9 lib/contextr/modules/mutex_code.rb
contextr-1.0.0 lib/contextr/modules/mutex_code.rb
contextr-1.0.1 lib/contextr/modules/mutex_code.rb
contextr-1.0.2 lib/contextr/modules/mutex_code.rb