[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:951

From: SASADA Koichi <ko1 atdot.net>
Date: Tue, 21 Feb 2006 19:56:08 +0900
Subject: [yarv-dev:951] Re: close> Re: block on exiting with living thread

 ささだです。

U.Nakamura wrote:
> ちょっと気になったのですが、cygwinやmswin32で、拡張ライブラリ
> で while(1){} したら Thread#kill も効かない、ってことですよね?
> 
> while(1){} に効かないのはどうでもいいんですが、長い read() と
> かの間も効かなかったりしますか?

 効きません。多分。

 現在、Thread#kill の処理は win32/win32.c のグローバル変数
interrupted_event *ではなく*、各スレッド(各ネイティブスレッド)が持って
いる yarv_thread_t#native_thread_data.interrupt_event に対して SetEvent
を発生させる、という実装にしています。たとえば Ruby の sleep() はそれを
利用しているので、sleep 中でも kill で無理やりとめることは可能になってい
ます。

 なので、たとえば read (というか select 相当)を、スレッドごとのイベン
トハンドルと混ぜて WaitForMultipleEvent() すればいいんだろーなーと思って
放置しています。その辺、どうでしょう。考えが甘い?

(でも、シグナルでは起きてくれないのはどうしたもんだか)

-- 
// SASADA Koichi at atdot dot net


-- 
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       890 2006-02-14 19:22 [usa garbagecollect.j] open> block on exiting with living thread
       947 2006-02-21 19:37 ┗[ko1 atdot.net       ]                                       
       949 2006-02-21 19:46  ┗[usa garbagecollect.j] close> Re: block on exiting with living thread
->     951 2006-02-21 19:56   ┗[ko1 atdot.net       ]                                   
       952 2006-02-21 20:07    ┗[usa garbagecollect.j]