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 /ractor.c | |
parent | 7fcb6b3dbe7517fe5426fdb6871cd4940a71b7e8 (diff) |
introduce rb_ractor_atfork()
to reset main ractor at fork().
Diffstat (limited to 'ractor.c')
-rw-r--r-- | ractor.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -1477,6 +1477,24 @@ rb_ractor_main_alloc(void) return r; } +#if defined(HAVE_WORKING_FORK) +void +rb_ractor_atfork(rb_vm_t *vm, rb_thread_t *th) +{ + // initialize as a main ractor + vm->ractor.cnt = 0; + vm->ractor.blocking_cnt = 0; + ruby_single_main_ractor = th->ractor; + th->ractor->status_ = ractor_created; + + rb_ractor_living_threads_init(th->ractor); + rb_ractor_living_threads_insert(th->ractor, th); + + VM_ASSERT(vm->ractor.blocking_cnt == 0); + VM_ASSERT(vm->ractor.cnt == 1); +} +#endif + void rb_gvl_init(rb_global_vm_lock_t *gvl); void |