summaryrefslogtreecommitdiff
path: root/thread_sync.c
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2020-09-17 14:45:44 +0200
committerBenoit Daloze <eregontp@gmail.com>2020-09-17 14:59:38 +0200
commit9472d160619861201bad91560c06248fef8362dc (patch)
treea2cf2586ca2c920c6f64f58971128982c8669dda /thread_sync.c
parent738a089b3ac55e5bfb26f9121ee73ffcb8c4a36b (diff)
Call scheduler.block instead of scheduler.kernel_sleep for blocking Queue/SizedQueue operations
* scheduler.unblock was already already called before but with no corresponding scheduler.block * add test that Queue#pop makes the scheduler wait until it gets an element.
Diffstat (limited to 'thread_sync.c')
-rw-r--r--thread_sync.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/thread_sync.c b/thread_sync.c
index 5b1e4f288f..741bff6160 100644
--- a/thread_sync.c
+++ b/thread_sync.c
@@ -483,9 +483,9 @@ rb_mutex_abandon_all(rb_mutex_t *mutexes)
#endif
static VALUE
-rb_mutex_sleep_forever(VALUE time)
+rb_mutex_sleep_forever(VALUE self)
{
- rb_thread_sleep_deadly_allow_spurious_wakeup();
+ rb_thread_sleep_deadly_allow_spurious_wakeup(self);
return Qnil;
}
@@ -516,7 +516,7 @@ rb_mutex_sleep(VALUE self, VALUE timeout)
mutex_lock_uninterruptible(self);
} else {
if (NIL_P(timeout)) {
- rb_ensure(rb_mutex_sleep_forever, Qnil, mutex_lock_uninterruptible, self);
+ rb_ensure(rb_mutex_sleep_forever, self, mutex_lock_uninterruptible, self);
} else {
rb_hrtime_t rel = rb_timeval2hrtime(&t);
rb_ensure(rb_mutex_wait_for, (VALUE)&rel, mutex_lock_uninterruptible, self);
@@ -904,9 +904,9 @@ rb_queue_push(VALUE self, VALUE obj)
}
static VALUE
-queue_sleep(VALUE arg)
+queue_sleep(VALUE self)
{
- rb_thread_sleep_deadly_allow_spurious_wakeup();
+ rb_thread_sleep_deadly_allow_spurious_wakeup(self);
return Qnil;
}