mirror of
https://github.com/ruby/ruby.git
synced 2025-09-18 18:13:58 +02:00
merge revision(s) b3c53a8a88
: [Backport #17672]
Make Ractor stdio belonging to the Ractor [Bug #17672] Defer making ractor stdio until ractor started. Before ractor started, created objects belong to the caller ractor instead of the created ractor. --- bootstraptest/test_ractor.rb | 12 ++++++++++++ ractor.c | 9 --------- thread.c | 9 +++++++++ 3 files changed, 21 insertions(+), 9 deletions(-)
This commit is contained in:
parent
6bf32cbed8
commit
6f9e007729
4 changed files with 22 additions and 10 deletions
|
@ -780,6 +780,18 @@ assert_equal 'ok', %q{
|
||||||
'ok'
|
'ok'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# $stdin,out,err belong to Ractor
|
||||||
|
assert_equal 'ok', %q{
|
||||||
|
r = Ractor.new do
|
||||||
|
$stdin.itself
|
||||||
|
$stdout.itself
|
||||||
|
$stderr.itself
|
||||||
|
'ok'
|
||||||
|
end
|
||||||
|
|
||||||
|
r.take
|
||||||
|
}
|
||||||
|
|
||||||
# $DEBUG, $VERBOSE are Ractor local
|
# $DEBUG, $VERBOSE are Ractor local
|
||||||
assert_equal 'true', %q{
|
assert_equal 'true', %q{
|
||||||
$DEBUG = true
|
$DEBUG = true
|
||||||
|
|
9
ractor.c
9
ractor.c
|
@ -1542,11 +1542,6 @@ rb_ractor_main_setup(rb_vm_t *vm, rb_ractor_t *r, rb_thread_t *th)
|
||||||
rb_ractor_living_threads_insert(r, th);
|
rb_ractor_living_threads_insert(r, th);
|
||||||
}
|
}
|
||||||
|
|
||||||
// io.c
|
|
||||||
VALUE rb_io_prep_stdin(void);
|
|
||||||
VALUE rb_io_prep_stdout(void);
|
|
||||||
VALUE rb_io_prep_stderr(void);
|
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
ractor_create(rb_execution_context_t *ec, VALUE self, VALUE loc, VALUE name, VALUE args, VALUE block)
|
ractor_create(rb_execution_context_t *ec, VALUE self, VALUE loc, VALUE name, VALUE args, VALUE block)
|
||||||
{
|
{
|
||||||
|
@ -1558,10 +1553,6 @@ ractor_create(rb_execution_context_t *ec, VALUE self, VALUE loc, VALUE name, VAL
|
||||||
r->pub.id = ractor_next_id();
|
r->pub.id = ractor_next_id();
|
||||||
RUBY_DEBUG_LOG("r:%u", r->pub.id);
|
RUBY_DEBUG_LOG("r:%u", r->pub.id);
|
||||||
|
|
||||||
r->r_stdin = rb_io_prep_stdin();
|
|
||||||
r->r_stdout = rb_io_prep_stdout();
|
|
||||||
r->r_stderr = rb_io_prep_stderr();
|
|
||||||
|
|
||||||
rb_ractor_t *cr = rb_ec_ractor_ptr(ec);
|
rb_ractor_t *cr = rb_ec_ractor_ptr(ec);
|
||||||
r->verbose = cr->verbose;
|
r->verbose = cr->verbose;
|
||||||
r->debug = cr->debug;
|
r->debug = cr->debug;
|
||||||
|
|
9
thread.c
9
thread.c
|
@ -770,6 +770,11 @@ thread_do_start(rb_thread_t *th)
|
||||||
|
|
||||||
void rb_ec_clear_current_thread_trace_func(const rb_execution_context_t *ec);
|
void rb_ec_clear_current_thread_trace_func(const rb_execution_context_t *ec);
|
||||||
|
|
||||||
|
// io.c
|
||||||
|
VALUE rb_io_prep_stdin(void);
|
||||||
|
VALUE rb_io_prep_stdout(void);
|
||||||
|
VALUE rb_io_prep_stderr(void);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
thread_start_func_2(rb_thread_t *th, VALUE *stack_start)
|
thread_start_func_2(rb_thread_t *th, VALUE *stack_start)
|
||||||
{
|
{
|
||||||
|
@ -792,6 +797,10 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start)
|
||||||
RB_VM_LOCK();
|
RB_VM_LOCK();
|
||||||
{
|
{
|
||||||
rb_vm_ractor_blocking_cnt_dec(th->vm, th->ractor, __FILE__, __LINE__);
|
rb_vm_ractor_blocking_cnt_dec(th->vm, th->ractor, __FILE__, __LINE__);
|
||||||
|
rb_ractor_t *r = th->ractor;
|
||||||
|
r->r_stdin = rb_io_prep_stdin();
|
||||||
|
r->r_stdout = rb_io_prep_stdout();
|
||||||
|
r->r_stderr = rb_io_prep_stderr();
|
||||||
}
|
}
|
||||||
RB_VM_UNLOCK();
|
RB_VM_UNLOCK();
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
||||||
#define RUBY_VERSION_TEENY 0
|
#define RUBY_VERSION_TEENY 0
|
||||||
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
||||||
#define RUBY_PATCHLEVEL 54
|
#define RUBY_PATCHLEVEL 55
|
||||||
|
|
||||||
#define RUBY_RELEASE_YEAR 2021
|
#define RUBY_RELEASE_YEAR 2021
|
||||||
#define RUBY_RELEASE_MONTH 3
|
#define RUBY_RELEASE_MONTH 3
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue