Class: Mutex

Inherits:
Object show all
Defined in:
opal/stdlib/thread.rb

Instance Method Summary collapse

Constructor Details

#initializeMutex

Returns a new instance of Mutex.



146
147
148
149
150
# File 'opal/stdlib/thread.rb', line 146

def initialize
  # We still keep the @locked state so any logic based on try_lock while
  # held yields reasonable results.
  @locked = false
end

Instance Method Details

#lockObject

Raises:



152
153
154
155
156
# File 'opal/stdlib/thread.rb', line 152

def lock
  raise ThreadError, 'Deadlock' if @locked
  @locked = true
  self
end

#locked?Boolean

Returns:



158
159
160
# File 'opal/stdlib/thread.rb', line 158

def locked?
  @locked
end

#owned?Boolean

Returns:



162
163
164
165
# File 'opal/stdlib/thread.rb', line 162

def owned?
  # Being the only "thread", we implicitly own any locked mutex.
  @locked
end

#synchronizeObject



182
183
184
185
186
187
188
189
# File 'opal/stdlib/thread.rb', line 182

def synchronize
  lock
  begin
    yield
  ensure
    unlock
  end
end

#try_lockObject



167
168
169
170
171
172
173
174
# File 'opal/stdlib/thread.rb', line 167

def try_lock
  if locked?
    false
  else
    lock
    true
  end
end

#unlockObject

Raises:



176
177
178
179
180
# File 'opal/stdlib/thread.rb', line 176

def unlock
  raise ThreadError, 'Mutex not locked' unless @locked
  @locked = false
  self
end