Class: PriorityMutex

Inherits:
Object
  • Object
show all
Defined in:
lib/priority_mutex.rb

Defined Under Namespace

Classes: Waiter

Instance Method Summary collapse

Constructor Details

#initializePriorityMutex

Returns a new instance of PriorityMutex.



35
36
37
38
39
# File 'lib/priority_mutex.rb', line 35

def initialize
  @pq = PQueue.new
  @pq_mutex = Mutex.new
  @resource_active = false
end

Instance Method Details

#locked?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/priority_mutex.rb', line 47

def locked?
  @resource_active || @pq.size > 0
end

#synchronize(priority = 0) ⇒ Object



41
42
43
44
45
# File 'lib/priority_mutex.rb', line 41

def synchronize(priority = 0)
  wait_for_resource_if_necessary(priority)
  yield
  release_resource
end