From: Tanaka Akira Date: 2012-03-08T21:52:19+09:00 Subject: [ruby-dev:45320] Re: 開発会議 2012年3月7日10:59 SASADA Koichi : > > で,今回扱いたいネタは,非同期のイベントをどう処理するか > (Thread#raise,trap,ファイナライザ,もっとあるかな?),なのですが,現 > 状での考察のまとめってどっかにありますかね. うぅむ。参加することにしましょう。 最近の議論は記録してないんですが、以下のようなメモが手元にありました。 * 2008-02-25 [ruby-talk:292398] Charles Oliver Nutter: Thread#raise, Thread#kill, and timeout.rb are unsafe [ruby-talk:294591] akr [ruby-talk:294917] akr * 2008-02-24 Charles Oliver Nutter http://headius.blogspot.com/2008/02/rubys-threadraise-threadkill-timeoutrb.html * 2007-12-22 [ruby-core:14266] Charles Oliver Nutter * flag 導入などの議論 * 2007-09-05 [ruby-talk:267616] Paul Brannan * 2006-09-18 [ruby-talk:214874] Joel VanderWerf: timeout and ensure: timeout も signal と同様な問題がある > 田中さんが headius と議論していたときは,どういう結論なんでしたっけ. 結論というわけじゃありませんが、案は [ruby-talk:294917] に書いてあります。 まぁ、用法から始めるのがいいと思うんですが、少なくとも以下のような話が あります。 * 単純なアプリケーションは ^C ですみやかに終わっていただきたい。 (人間は効かなければ数回は繰り返すので 100%終わる必要はないが、 高確率で終わってほしい) * 外部に状態を持つアプリケーションを外から終わらせる場合、 一貫性のとれた状態で終わっていただきたい。 (CGI なカウンタ、DBM にアクセスするもの、など) * 多数の (短時間で終わる) リクエストを並行して受けつけるサーバはそのときに 処理中だったリクエストが終わった後に終わっていただきたい。 (web server の graceful shutdown) * (GC で開放されるような資源を確保する以外の) 副作用がない計算を行う スレッドは任意のタイミングで他から終了させてよい。 * daemon は SIGHUP で設定を読み直すという慣習がある。 他にどんなのがありますかね。 -- [田中 哲][たなか あきら][Tanaka Akira]