From 79df14c04b452411b9d17e26a398e491bca1a811 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Tue, 10 Mar 2020 02:22:11 +0900 Subject: Introduce Ractor mechanism for parallel execution This commit introduces Ractor mechanism to run Ruby program in parallel. See doc/ractor.md for more details about Ractor. See ticket [Feature #17100] to see the implementation details and discussions. [Feature #17100] This commit does not complete the implementation. You can find many bugs on using Ractor. Also the specification will be changed so that this feature is experimental. You will see a warning when you make the first Ractor with `Ractor.new`. I hope this feature can help programmers from thread-safety issues. --- vm_dump.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'vm_dump.c') diff --git a/vm_dump.c b/vm_dump.c index 5b65860cde..88c3207176 100644 --- a/vm_dump.c +++ b/vm_dump.c @@ -35,6 +35,7 @@ #include "internal/vm.h" #include "iseq.h" #include "vm_core.h" +#include "ractor.h" #define MAX_POSBUF 128 @@ -1092,12 +1093,13 @@ const char *ruby_fill_thread_id_string(rb_nativethread_id_t thid, rb_thread_id_s void rb_vmdebug_stack_dump_all_threads(void) { - rb_vm_t *vm = GET_VM(); rb_thread_t *th = NULL; + rb_ractor_t *r = GET_RACTOR(); - list_for_each(&vm->living_threads, th, vmlt_node) { + // TODO: now it only shows current ractor + list_for_each(&r->threads.set, th, lt_node) { #ifdef NON_SCALAR_THREAD_ID - rb_thread_id_string_t buf; + rb_thread_id_string_t buf; ruby_fill_thread_id_string(th->thread_id, buf); fprintf(stderr, "th: %p, native_id: %s\n", th, buf); #else -- cgit v1.2.3