概要
Mutex#sleep(timeout = nil) -> self
詳細
与えられた秒数の間スリープしてからロックを解放する。
サンプルコード
require "thread" require "date" class MutexSample attr_reader :count def initialize @m = Mutex.new end def sleep_test(id) puts "id = #{id}, locked? = #{@m.locked?}" @m.lock puts "id = #{id}, locked? = #{@m.locked?} #{DateTime.now}" @m.sleep(1) @m.unlock puts "id = #{id}, locked? = #{@m.locked?} #{DateTime.now}" end end ms = MutexSample.new threads = [*1..5].map do |i| Thread.new do |t| ms.sleep_test(i) end end threads.each(&:join)
出力
$ ruby mutex_sleep.rb id = 1, locked? = false id = 3, locked? = false id = 5, locked? = false id = 1, locked? = true 2014-08-26T22:58:19+09:00 id = 2, locked? = false id = 3, locked? = true 2014-08-26T22:58:19+09:00 id = 4, locked? = false id = 4, locked? = true 2014-08-26T22:58:19+09:00 id = 2, locked? = true 2014-08-26T22:58:19+09:00 id = 5, locked? = true 2014-08-26T22:58:19+09:00 id = 2, locked? = false 2014-08-26T22:58:20+09:00 id = 4, locked? = false 2014-08-26T22:58:20+09:00 id = 3, locked? = false 2014-08-26T22:58:20+09:00 id = 5, locked? = false 2014-08-26T22:58:20+09:00 id = 1, locked? = false 2014-08-26T22:58:20+09:00