From: Masatoshi SEKI Date: 2000-10-23T01:40:14+09:00 Subject: [ruby-dev:11283] Re: thread.rb 咳といいます。 いろいろ素人です。 > たしか linuxの昔の schedulerでの話だったと思うんですが、大量の processが > 待ちの状態のときに全てを起すと、とんでもない時間がかかって大変だった事が > あったはずです。 > > で、結局、一つの processだけを起す方に変ったはず‥‥。 資源待ちのプロセスのどれかに確実に資源を与える仕組みと、 資源をつかんでいるプロセスの終了時に資源を回収する仕組みが あれば一つ起こすだけですみますよね。 資源がOSの直接管理するprimitiveなものだったら、できそうですね。 > で、そうなると咳さんが言ってる様にまずそうなんですが‥‥。interpreterが > そこらへんの資源の管理というか、殺される(exitされる?) threadが lockして > る場合は unlockするとかしてあげる方が将来的に良さそうなんですが、どうで > しょう? Rubyの Mutex, Queue などは primitive じゃないからインタプリタが直接 管理することは難しそうですね。 先の問題は、Queue にpushされたデータを待っているスレッドにあげようと したのだけど、消費する前にkillされてしまった状態、つまり 確実に資源を与える仕組み が機能しなくなることがあるってことです。 # ああ、そうだ。だからMINIX本読んでいてランデブーでできないか考えたんだ。 # [ruby-list:25312] 話が戻ってしまうけど、資源をlockしているスレッドがkillされたときに unlockする仕組みは ensure をうまく使えば(限定的ながら)実現できるん じゃないかなぁといろいろときどき実験してます。 # ああスレッド勘通信