summaryrefslogtreecommitdiff
path: root/thread.c
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-06-13 15:06:30 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-06-13 15:06:30 +0000
commitafd1a64cd6ee73e69744a09242cc079b3f1f5170 (patch)
tree60c0e44dab0d9b01e9f3fb3f44dc346def9da66b /thread.c
parent57ed1e9d75360713c3d5d75c4cbb05ea48c8b025 (diff)
* thread.c (rb_thread_schedule_rec): call gvl_yield() unconditionally.
* thread_pthread.c: remove HAVE_GVL_YIELD macro. * thread_win32.c (gvl_yield): new. this fallback logic was moved from rb_thread_schedule_rec(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32069 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r--thread.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/thread.c b/thread.c
index 2a6ba6d637..914b686f00 100644
--- a/thread.c
+++ b/thread.c
@@ -1025,18 +1025,8 @@ rb_thread_schedule_rec(int sched_depth, unsigned long limits_us)
RB_GC_SAVE_MACHINE_CONTEXT(th);
-#if HAVE_GVL_YIELD
- {
- if (th->running_time_us >= limits_us)
- gvl_yield(th->vm, th);
- }
-#else
- gvl_release(th->vm);
- {
- native_thread_yield();
- }
- gvl_acquire(th->vm, th);
-#endif
+ if (th->running_time_us >= limits_us)
+ gvl_yield(th->vm, th);
rb_thread_set_current(th);
thread_debug("rb_thread_schedule/switch done\n");