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