diff options
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -85,6 +85,7 @@ static ID id_locals; static void sleep_timeval(rb_thread_t *th, struct timeval time, int spurious_check); static void sleep_wait_for_interrupt(rb_thread_t *th, double sleepsec, int spurious_check); static void sleep_forever(rb_thread_t *th, int nodeadlock, int spurious_check); +static void rb_thread_sleep_deadly_allow_spurious_wakeup(void); static double timeofday(void); static int rb_threadptr_dead(rb_thread_t *th); static void rb_check_deadlock(rb_vm_t *vm); @@ -845,7 +846,7 @@ thread_join_sleep(VALUE arg) while (target_th->status != THREAD_KILLED) { if (forever) { - sleep_forever(th, 1, 0); + sleep_forever(th, TRUE, FALSE); } else { double now = timeofday(); @@ -1136,14 +1137,21 @@ void rb_thread_sleep_forever(void) { thread_debug("rb_thread_sleep_forever\n"); - sleep_forever(GET_THREAD(), 0, 1); + sleep_forever(GET_THREAD(), FALSE, TRUE); } void rb_thread_sleep_deadly(void) { thread_debug("rb_thread_sleep_deadly\n"); - sleep_forever(GET_THREAD(), 1, 1); + sleep_forever(GET_THREAD(), TRUE, TRUE); +} + +static void +rb_thread_sleep_deadly_allow_spurious_wakeup(void) +{ + thread_debug("rb_thread_sleep_deadly_allow_spurious_wakeup\n"); + sleep_forever(GET_THREAD(), TRUE, FALSE); } static double |