なかだです。
At Thu, 22 Jun 2006 23:11:50 +0900,
Tanaka Akira wrote in [ruby-dev:28798]:
> 追いかけると、まず最初は次の挙動ですかね。
>
> % ./ruby -ve 'Thread.new(1) {|v| p v }.join'
> ruby 1.9.0 (2006-06-22) [i686-linux]
> [1]
rb_block_pass()は不要になりますね。
Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.902
diff -p -U2 -r1.902 eval.c
--- eval.c 21 Jun 2006 08:08:34 -0000 1.902
+++ eval.c 22 Jun 2006 16:36:25 -0000
@@ -11977,5 +11977,5 @@ rb_thread_start_1(void)
volatile rb_thread_t th_save = th;
VALUE proc = new_thread.proc;
- VALUE arg = new_thread.arg;
+ volatile VALUE arg = new_thread.arg;
struct ruby_env *ip = th->anchor;
enum thread_status status;
@@ -11993,5 +11993,5 @@ rb_thread_start_1(void)
if (THREAD_SAVE_CONTEXT(th) == 0) {
new_thread.thread = 0;
- th->result = rb_block_pass(rb_thread_yield_0, arg, proc);
+ th->result = rb_proc_yield(RARRAY(arg)->len, RARRAY(arg)->ptr,
proc);
}
th = th_save;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦
|
Try Searching:
servers, voip, java, networking, microsoft ...
|
|
|
|