From: "Nobuyoshi.Nakada" Date: 2000-11-01T10:07:13+09:00 Subject: [ruby-dev:11356] Re: SIGINT on windows なかだです。 At Tue, 31 Oct 2000 23:47:49 +0900 Daisuke Aoki wrote: > > これで思い付いたことがあります。EnterCriticalSection() も 青木さんの代 > > 替コードも、同一スレッドの再入は防げません。ひょっとしてこれがまずいので > > は。 > > [ruby-dev:11298]、[ruby-dev:11326]、[ruby-dev:11345] のパッチで > 問題が生じなくなりました。USE_WAITEVENT を 95 にしても大丈夫なので(多分) > その方向でお願いします。ええと、私は socket 関連のテストはしてませんので。 USE_CRITICALSECTION の方はやっぱりダメでしたか? ともかく USE_WAITEVENT ははずすことにしましょう。 > どうやら、同一スレッドの再入があるみたいですね。どういうタイミングで起こるのかは > わかりませんが。 単にシステム側で決まったスレッドに SetThreadContext() してるだけなんじゃ ないでしょうか。キューイングしてるとかじゃなくて。だからシグナルハンドラ の処理が終わる前にもう一度割り込んじゃうとうまくないと。 Sleep(200) を入れると OK というのは、クリティカルな部分に当たる確率が 低くなるとか、キーリピートのタイミングと重ならなくなるとかのような気がし ます。たぶん。 # 分かってしまえば意外と簡単な話。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦