/*
 * Document-method: broadcast
 * call-seq: broadcast
 *
 * Wakes up all threads waiting for this condition.
 *
 */

static VALUE
rb_condvar_broadcast(VALUE self)
{
    ConditionVariable *condvar;

    Data_Get_Struct(self, ConditionVariable, condvar);
  
    rb_thread_critical = 1;
    rb_ensure(wake_all, (VALUE)&condvar->waiting, set_critical, 0);
    rb_thread_schedule();

    return self;
}