diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-18 14:49:43 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-18 14:49:43 +0000 |
commit | 3882b07c3a8694e07b30b56e5c2c26c1695122f2 (patch) | |
tree | eebd5b5d658aebca97c4cc3521eda2b36c52c82b | |
parent | 956666cf5ae92d1046106c24e298469d127e3a6e (diff) | |
download | ruby-3882b07c3a8694e07b30b56e5c2c26c1695122f2.tar.gz |
* thread.c (thread_create_core): set thread group before creating
thread.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15115 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | bootstraptest/test_thread.rb | 7 | ||||
-rw-r--r-- | thread.c | 2 |
3 files changed, 13 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Fri Jan 18 23:49:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * thread.c (thread_create_core): set thread group before creating + thread. + Fri Jan 18 20:19:51 2008 NAKAMURA Usaku <usa@ruby-lang.org> * parse.y (ripper_initialize): too early to set parser->enc. diff --git a/bootstraptest/test_thread.rb b/bootstraptest/test_thread.rb index 9711535d72..7810455c87 100644 --- a/bootstraptest/test_thread.rb +++ b/bootstraptest/test_thread.rb @@ -160,6 +160,13 @@ assert_equal %q{[1, 1]}, %q{ sleep 0.1 [thg.list.size, ThreadGroup::Default.list.size] } +assert_equal %q{true}, %q{ + thg = ThreadGroup.new + + t = Thread.new{sleep 5} + thg.add t + thg.list.include?(t) +} assert_equal %q{[true, nil, true]}, %q{ /a/ =~ 'a' $a = $~ @@ -302,7 +302,6 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s #ifdef __ia64 th->machine_register_stack_start = register_stack_start; #endif - th->thgroup = th->vm->thgroup_default; thread_debug("thread start: %p\n", th); native_mutex_lock(&th->vm->global_interpreter_lock); @@ -383,6 +382,7 @@ thread_create_core(VALUE thval, VALUE args, VALUE (*fn)(ANYARGS)) th->first_func = fn; th->priority = GET_THREAD()->priority; + th->thgroup = th->vm->thgroup_default; native_mutex_initialize(&th->interrupt_lock); /* kick thread */ |