static mrb_value mrb_mutex_sleep(mrb_state* mrb, mrb_value self) { mrb_int t; mrb_get_args(mrb, "i", &t); #ifndef _WIN32 sleep(t); #else Sleep(t * 1000); #endif return mrb_mutex_unlock(mrb, self); }
static mrb_value mrb_mutex_synchronize(mrb_state* mrb, mrb_value self) { mrb_value proc = mrb_nil_value(); mrb_get_args(mrb, "&", &proc); if (!mrb_nil_p(proc)) { mrb_mutex_lock(mrb, self); mrb_yield_argv(mrb, proc, 0, NULL); mrb_mutex_unlock(mrb, self); } return mrb_nil_value(); }