Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Thread::Mutexクラス > synchronize

instance method Thread::Mutex#synchronize

synchronize { ... } -> object[permalink][rdoc]

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"