From: nobu.nakada@... Date: 2003-11-12T08:22:50+09:00 Subject: [ruby-dev:21900] Re: pthread trouble on tcltklib なかだです。 At Wed, 5 Nov 2003 17:05:03 +0900, Hidetoshi NAGAI wrote: > @@ -8629,6 +8651,16 @@ > next = 0; > curr = curr_thread; /* starting thread */ > > +#if defined(HAVE_LIBPTHREAD) && defined(USE_PTHREAD_EXTLIB) > + if ((st = pthread_mutex_trylock(&mtx)) == EBUSY) { > + if (pthread_self() != thid) { > + return; > + } > + } else { > + thid = pthread_self(); > + } > +#endif > + > while (curr->status == THREAD_KILLED) { > curr = curr->prev; > } この部分ですが、rb_thread_schedule()への再入だけではなく、別の pthread内でのrubyスレッドの切替え自体が危険じゃないでしょうか。 そう考えると、ロックじゃなくて最初にスレッドIDを保存しておいて、 単純に現在のスレッドと一致しなかったら戻る、だけでもよさそうな 気がして来ました。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦