[#11357] [PATCH] an analogue of `long long' — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
まつもと ゆきひろです
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
まつもと ゆきひろです
>From: matz@zetabits.com (Yukihiro Matsumoto)
まつもと ゆきひろです
[#11440] class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...>
[ruby-dev:11428] からの続きですが、threadは切りました。
高橋征義です。用語について。
At Wed, 8 Nov 2000 20:44:55 +0900,
高橋征義です。
At Thu, 9 Nov 2000 13:30:34 +0900,
まつもと ゆきひろです
[#11447] gets は secure? — Kazuhiro NISHIYAMA <zn@...>
出力がInsecureなのに入力はsecureなのでしょうか?
[#11467] debug write in regex.c? — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
[#11500] rb_to_integer/rb_to_int — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
[#11520] A problem of Socket methods on Windows — OKA Toshiyuki <oka@...>
岡と申します。
なかだです。
まつもと ゆきひろです
なかだです。
岡です。
なかだです。
なかだです。
岡です。
なかだです。
[#11569] blocking on socket? — Shugo Maeda <shugo@...>
前田です。
[#11591] object.c パッチ — Kazuhiro NISHIYAMA <zn@...>
使われてなかったnil_plusの削除とOBJ_INFECTへの変更です。
[#11611] return value of waitpid2 — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
荒井です。いや、新井です。(よくあることさ)
まつもと ゆきひろです
新井です。
新井です。
[#11618] Re: class variable — "Koji Arai" <jca02266@...>
新井です
なかだです。
まつもと ゆきひろです
> まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
新井です。
[#11641] eval too slow — Wakou Aoyama <wakou@...>
青山です。
[#11650] conflict of NODE_DREGX_ONCE — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
まつもと ゆきひろです
[#11662] IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org>
In article <E140cR3-0002ls-00@ev.netlab.zetabits.co.jp>,
まつもと ゆきひろです
In article <E140fxW-0002u9-00@ev.netlab.zetabits.co.jp>,
In article <hvor93w5wb8.fsf@coulee.m17n.org>,
In article <hvoofz05uwz.fsf@coulee.m17n.org>,
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
In article <E141eaC-0003w0-00@ev.netlab.zetabits.co.jp>,
まつもと ゆきひろです
In article <E142ZqF-0004rX-00@ev.netlab.zetabits.co.jp>,
まつもと ゆきひろです
In article <E143Zem-000271-00@ev.netlab.zetabits.co.jp>,
まつもと ゆきひろです
In article <E143amj-00028V-00@ev.netlab.zetabits.co.jp>,
[ruby-dev:11554] Re: SIGINT on windows
なかだです。
At Wed, 15 Nov 2000 23:31:53 +0900
> 止まってしまう時の状況をちゃんと調べてみました。
>
> SIGNAL: win32_main_context() の1番目の RUBY_CRITICAL に入る。
> MAIN: win32_enter_syscall() の win32_disable_interrupt() で止まる。
> SuspendThread() で止まっていないケース。
> SIGNAL: win32_main_context() で MAIN を SetThreadContext() で操作。MAIN が動く。
> SIGNAL: win32_main_context() の1番目の RUBY_CRITICAL から出る。
> MAIN: win32_call_hander() の RUBY_CRITICAL に入る。
> MAIN: win32_call_hander() の RUBY_CRITICAL から出る。
> SIGNAL: win32_main_context() の2番目の RUBY_CRITICAL に入ろうとするが止まる。
>
> という感じで、EnterCriticalSection() で止まっているスレッドに、
> SetThreadContext() で操作しているしたのが原因?で win32_enter_syscall() の
> win32_disable_interrupt() で CriticalSection を獲得してないはずなのになぜか
> 獲得したことになってて、win32_main_context() の2番目の RUBY_CRITICAL に入ることが
> できずデッドロックしてしまうみたいです。
あーなるほど。EnterCriticalSection()も Win95 では中断不可のシステムコー
ルだということですね。自前で同期してやるしかありませんか、やっぱり。
しかし、今のコードだと SetThreadContext() されるときというのはほとんど
Sleep(1) の中になると思うんですが、Sleep() は中断しても大丈夫なんでしょ
うか。WaitFor* が大丈夫なら結構手だてはありそうなんですが…。
> で、2行目の MAIN: win32_enter_syscall() の win32_disable_interrupt() がないケースでは
> デッドロックしていません。これは、rb_io_gets() 内のような win32_leave_syscall() の
> 後に win32_enter_syscall() がすぐ呼ばれるようなケースで起きやすいです。
win32_leave_syscall() で実行を許可された SIGNAL の方が、MAIN が
win32_enter_syscall() に入るより先に SuspendThread() してるんでしょうね、
これは。
> 前、win32_main_context() で SetThreadContext() 使って操作する前に、
> メインスレッドで win32_enable_interrupt() でトップレベルまで戻ったときに、
> ループで止めるという仕組みをつくって試したことがあったのですが、最終的にはそういうことを
> しないと同期 API で止まっている状況を完全に防ぐことはできなさそうですね。
トップレベルまで戻るというのは?
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦