summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inits.c1
-rw-r--r--thread.c13
2 files changed, 11 insertions, 3 deletions
diff --git a/inits.c b/inits.c
index a3eec164bb..f8eba911d5 100644
--- a/inits.c
+++ b/inits.c
@@ -20,6 +20,7 @@ static void Init_builtin_prelude(void);
void
rb_call_inits(void)
{
+ CALL(Thread_Mutex);
#if USE_TRANSIENT_HEAP
CALL(TransientHeap);
#endif
diff --git a/thread.c b/thread.c
index 063d96045e..4b563a5aa4 100644
--- a/thread.c
+++ b/thread.c
@@ -5423,6 +5423,16 @@ rb_thread_backtrace_locations_m(int argc, VALUE *argv, VALUE thval)
return rb_vm_thread_backtrace_locations(argc, argv, thval);
}
+void
+Init_Thread_Mutex()
+{
+ rb_thread_t *th = GET_THREAD();
+
+ rb_native_mutex_initialize(&th->vm->waitpid_lock);
+ rb_native_mutex_initialize(&th->vm->workqueue_lock);
+ rb_native_mutex_initialize(&th->interrupt_lock);
+}
+
/*
* Document-class: ThreadError
*
@@ -5542,9 +5552,6 @@ Init_Thread(void)
/* acquire global vm lock */
rb_global_vm_lock_t *gvl = rb_ractor_gvl(th->ractor);
gvl_acquire(gvl, th);
- rb_native_mutex_initialize(&th->vm->waitpid_lock);
- rb_native_mutex_initialize(&th->vm->workqueue_lock);
- rb_native_mutex_initialize(&th->interrupt_lock);
th->pending_interrupt_queue = rb_ary_tmp_new(0);
th->pending_interrupt_queue_checked = 0;