summaryrefslogtreecommitdiff
path: root/ractor.c
diff options
context:
space:
mode:
Diffstat (limited to 'ractor.c')
-rw-r--r--ractor.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/ractor.c b/ractor.c
index 491a1e3f71..a5f22a4724 100644
--- a/ractor.c
+++ b/ractor.c
@@ -222,6 +222,7 @@ ractor_free(void *ptr)
rb_native_cond_destroy(&r->wait.cond);
ractor_queue_free(&r->incoming_queue);
ractor_waiting_list_free(&r->taking_ractors);
+ if (r->default_rand) ruby_xfree(r->default_rand);
ruby_xfree(r);
}
@@ -1767,6 +1768,21 @@ rb_ractor_stderr_set(VALUE err)
}
}
+void *
+rb_ractor_default_rand(void *ptr)
+{
+ if (rb_ractor_main_p()) {
+ static void *default_rnd;
+ if (UNLIKELY(ptr != NULL)) default_rnd = ptr;
+ return default_rnd;
+ }
+ else {
+ rb_ractor_t *cr = GET_RACTOR();
+ if (UNLIKELY(ptr != NULL)) cr->default_rand = ptr;
+ return cr->default_rand;
+ }
+}
+
/// traverse function
// 2: stop search