instance method Thread::ConditionVariable#broadcast

broadcast -> [Thread][permalink][rdoc]

状態変数を待っているスレッドをすべて再開します。再開されたスレッドは Thread::ConditionVariable#wait で指定した mutex のロックを試みます。

[RETURN]
実行待ちしていたスレッドの配列を返します。


mutex = Mutex.new
cv = ConditionVariable.new
flg = true

3.times {
  Thread.start {
    mutex.synchronize {
      puts "a1"
      while (flg)
        cv.wait(mutex)
      end
      puts "a2"
    }
  }
}

Thread.start {
  mutex.synchronize {
    flg = false
    cv.broadcast
  }
}

sleep 1

# => a1
# => a1
# => a1
# => a2
# => a2
# => a2