From: "Nobuyoshi.Nakada" Date: 2000-11-15T17:12:12+09:00 Subject: [ruby-dev:11536] Re: SIGINT on windows なかだです。 At Tue, 14 Nov 2000 23:37:03 +0900 Daisuke Aoki wrote: > > しかし、-MT だと VC のランタイムの中でも使いまくってるという > > か、シグナルハンドラを取り出す辺りでもすでに使ってますが、-MT > > でコンパイルしたプログラムは Win95 だと signal() 使えないんでしょ > > うか。なにか別のことを見落としてるような気がしますが、分かりま > > せん。 (snip) > CTRL-C or BREAK で signal handler は非メインスレッドで呼ばれて、 > raise() とかだとメインスレッドから呼ばれて、-MT 付けると TLS で > スレッドごとに区別される一部のグローバル変数が出てくることぐらいしか > 違わないのでは( CreateThread() ではなくて _beginthread(ex)() 使った > ケースだと)。signal handler() が呼ばれる非メインスレッドのスレッドで > その辺はどうなるかは知りませんが。 -MT 付きだと winsig.c:ctrlevent_capture() で _mlock(_SIGNAL_LOCK) とし てクリティカルセクションを使ってるわけです。となると、単純に Win9x では signal のスレッドではクリティカルセクションを使えないとは思えない、って ことです。やっぱり SetThreadContext() との組み合わせがまずいってことか、 他になにか間違えてるか。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦