From a14682906f063617ce22969dd100a512fe63ba33 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 9 Jul 2008 13:41:19 +0000 Subject: * thread.c (sleep_forever): wait until timed out. [ruby-core:17270] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- thread_pthread.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) (limited to 'thread_pthread.c') diff --git a/thread_pthread.c b/thread_pthread.c index c6aca1d464..4787823b3d 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -496,7 +496,6 @@ static void native_sleep(rb_thread_t *th, struct timeval *tv, int deadlockable) { int prev_status = th->status; - int retry = 0; struct timespec ts; struct timeval tvn; @@ -520,7 +519,6 @@ native_sleep(rb_thread_t *th, struct timeval *tv, int deadlockable) } thread_debug("native_sleep %ld\n", tv ? tv->tv_sec : -1); - sleep_again: GVL_UNLOCK_BEGIN(); { pthread_mutex_lock(&th->interrupt_lock); @@ -532,7 +530,7 @@ native_sleep(rb_thread_t *th, struct timeval *tv, int deadlockable) thread_debug("native_sleep: interrupted before sleep\n"); } else { - if (tv == 0 || (!retry && ts.tv_sec < tvn.tv_sec /* overflow */)) { + if (tv == 0 || ts.tv_sec < tvn.tv_sec /* overflow */ ) { int r; thread_debug("native_sleep: pthread_cond_wait start\n"); r = pthread_cond_wait(&th->native_thread_data.sleep_cond, @@ -542,7 +540,7 @@ native_sleep(rb_thread_t *th, struct timeval *tv, int deadlockable) } else { int r; - thread_debug("native_sleep: pthread_cond_timedwait start (%ld.%.9ld)\n", + thread_debug("native_sleep: pthread_cond_timedwait start (%ld, %ld)\n", (unsigned long)ts.tv_sec, ts.tv_nsec); r = pthread_cond_timedwait(&th->native_thread_data.sleep_cond, &th->interrupt_lock, &ts); @@ -560,17 +558,6 @@ native_sleep(rb_thread_t *th, struct timeval *tv, int deadlockable) th->status = prev_status; if (!tv && deadlockable) th->vm->sleeper--; RUBY_VM_CHECK_INTS(); - if (tv) { - gettimeofday(&tvn, NULL); - if (ts.tv_sec > tvn.tv_sec || - (ts.tv_sec == tvn.tv_sec && ts.tv_nsec > tvn.tv_usec * 1000)) { - thread_debug("native_sleep: %ld.%.9ld > %ld.%.6ld\n", - (long)ts.tv_sec, ts.tv_nsec, - (long)tvn.tv_sec, tvn.tv_usec); - retry = 1; - goto sleep_again; - } - } thread_debug("native_sleep done\n"); } -- cgit v1.2.3