# File lib/mutex_fix.rb, line 16 16: def unlock 17: return unless @locked 18: Thread.critical = true 19: @locked = false 20: begin 21: t = @waiting.pop 22: t.wakeup if t 23: rescue ThreadError 24: retry 25: end 26: Thread.critical = false 27: begin 28: t.run if t 29: rescue ThreadError 30: end 31: self 32: end