Class: Mutex
Instance Method Summary collapse
-
#initialize ⇒ Mutex
constructor
A new instance of Mutex.
- #lock ⇒ Object
- #locked? ⇒ Boolean
- #owned? ⇒ Boolean
- #synchronize ⇒ Object
- #try_lock ⇒ Object
- #unlock ⇒ Object
Constructor Details
#initialize ⇒ Mutex
Returns a new instance of Mutex
119 120 121 122 123
# File 'opal/stdlib/thread.rb', line 119 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
#lock ⇒ Object
Raises:
- (ThreadError )
125 126 127 128 129
# File 'opal/stdlib/thread.rb', line 125 def lock raise ThreadError , 'Deadlock' if @locked @locked = true self end
#locked? ⇒ Boolean
Returns:
- (Boolean )
131 132 133
# File 'opal/stdlib/thread.rb', line 131 def locked? @locked end
#owned? ⇒ Boolean
Returns:
- (Boolean )
135 136 137 138
# File 'opal/stdlib/thread.rb', line 135 def owned? # Being the only "thread", we implicitly own any locked mutex. @locked end
#synchronize ⇒ Object
155 156 157 158 159 160 161 162
# File 'opal/stdlib/thread.rb', line 155 def synchronize lock begin yield ensure unlock end end
#try_lock ⇒ Object
140 141 142 143 144 145 146 147
# File 'opal/stdlib/thread.rb', line 140 def try_lock if locked? false else lock true end end
#unlock ⇒ Object
Raises:
- (ThreadError )
149 150 151 152 153
# File 'opal/stdlib/thread.rb', line 149 def unlock raise ThreadError , 'Mutex not locked' unless @locked @locked = false self end