synchronize { ... } -> object
[permalink][rdoc][edit]-
mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。
ブロックが最後に評価した値を返します。
- [EXCEPTION] ThreadError:
- self 既にカレントスレッドにロックされている場合に発生します。また、Signal.#trap に指定したハンドラ内で実行した場合に発生します。
m = Mutex.new result = m.synchronize do m.locked? # => true # critical part "result" end m.locked? # => false result # => "result"