概要
Mutex#unlock -> self
詳細
mutex オブジェクトのロックを解除する。
サンプルコード
require "thread" class Counter attr_reader :count def initialize @count = 0 @m = Mutex.new end def increment(id) @m.lock begin puts "inner lock #{id}" @count += 1 sleep rand(5) ensure @m.unlock end end end counter = Counter.new threads = [*1..5].map do |i| Thread.new do |t| counter.increment(i) puts counter.count end end threads.each(&:join)
出力
inner unlock 1 1 inner unlock 2 2 inner unlock 3 3 inner unlock 4 4 inner unlock 5 5
※参考までに Mutex がなかった場合
5 5 5 5 5