Class: RemoteService::Util::Lock

Inherits:
Object
  • Object
show all
Defined in:
lib/remote_service/util/lock.rb

Instance Method Summary collapse

Constructor Details

#initialize(timeout = 0) ⇒ Lock

Returns a new instance of Lock.



6
7
8
9
10
# File 'lib/remote_service/util/lock.rb', line 6

def initialize(timeout=0)
  @mutex = Mutex.new
  @condition = ConditionVariable.new
  @timeout = timeout
end

Instance Method Details

#unlock(*return_value) ⇒ Object



12
13
14
15
# File 'lib/remote_service/util/lock.rb', line 12

def unlock(*return_value)
  @return_value = *return_value
  @mutex.synchronize{ @condition.signal }
end

#waitObject



17
18
19
20
21
22
# File 'lib/remote_service/util/lock.rb', line 17

def wait
  Timeout.timeout(@timeout) do
    @mutex.synchronize{ @condition.wait(@mutex) }
    @return_value
  end
end