diff options
author | Koichi Sasada <ko1@atdot.net> | 2020-12-24 04:29:59 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2020-12-24 04:30:50 +0900 |
commit | 7340e7f82780f529d80490045f5ea3e2559d563c (patch) | |
tree | 5d0784a0de345d637e1c211c6558f53b81a3308a /thread.c | |
parent | 7fcb6b3dbe7517fe5426fdb6871cd4940a71b7e8 (diff) | |
download | ruby-7340e7f82780f529d80490045f5ea3e2559d563c.tar.gz |
introduce rb_ractor_atfork()
to reset main ractor at fork().
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 8 |
1 files changed, 3 insertions, 5 deletions
@@ -4719,6 +4719,7 @@ rb_clear_coverages(void) } #if defined(HAVE_WORKING_FORK) + static void rb_thread_atfork_internal(rb_thread_t *th, void (*atfork)(rb_thread_t *, const rb_thread_t *)) { @@ -4741,11 +4742,7 @@ rb_thread_atfork_internal(rb_thread_t *th, void (*atfork)(rb_thread_t *, const r } rb_vm_living_threads_init(vm); - // threads - vm->ractor.cnt = 0; - rb_ractor_living_threads_init(th->ractor); - rb_ractor_living_threads_insert(th->ractor, th); - + rb_ractor_atfork(vm, th); /* may be held by MJIT threads in parent */ rb_native_mutex_initialize(&vm->waitpid_lock); @@ -4758,6 +4755,7 @@ rb_thread_atfork_internal(rb_thread_t *th, void (*atfork)(rb_thread_t *, const r rb_ractor_sleeper_threads_clear(th->ractor); rb_clear_coverages(); + VM_ASSERT(vm->ractor.blocking_cnt == 0); VM_ASSERT(vm->ractor.cnt == 1); } |