diff options
author | Samuel Williams <[email protected]> | 2020-05-14 22:10:55 +1200 |
---|---|---|
committer | GitHub <[email protected]> | 2020-05-14 22:10:55 +1200 |
commit | 0e3b0fcdba70cf96a8e0654eb8f50aacb8024bd4 (patch) | |
tree | 74d381412dfd8ff49dd3039f8aeae09ad9e4e6e3 /process.c | |
parent | 336119dfc5e6baae0a936d6feae780a61975479c (diff) |
Thread scheduler for light weight concurrency.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3032
Merged-By: ioquatix <[email protected]>
Diffstat (limited to 'process.c')
-rw-r--r-- | process.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -4892,9 +4892,14 @@ rb_f_spawn(int argc, VALUE *argv, VALUE _) static VALUE rb_f_sleep(int argc, VALUE *argv, VALUE _) { - time_t beg, end; + VALUE scheduler = rb_current_thread_scheduler(); - beg = time(0); + if (scheduler != Qnil) { + VALUE result = rb_funcallv(scheduler, rb_intern("wait_sleep"), argc, argv); + return RTEST(result); + } + + time_t beg = time(0); if (argc == 0) { rb_thread_sleep_forever(); } @@ -4903,7 +4908,7 @@ rb_f_sleep(int argc, VALUE *argv, VALUE _) rb_thread_wait_for(rb_time_interval(argv[0])); } - end = time(0) - beg; + time_t end = time(0) - beg; return INT2FIX(end); } |