メソッド定義で括弧省略するのって死ぬほど読み難いと思うんだけど、実際使ってる人は読みやすいとか思ってんのかな。
まぁ人の勝手ですね。そうですね。
メソッド定義で括弧省略するのって死ぬほど読み難いと思うんだけど、実際使ってる人は読みやすいとか思ってんのかな。
まぁ人の勝手ですね。そうですね。
箱がある。良いことじゃないものが少しずつ溜まっていく箱。残りの空白は謙虚さとか、そういうもの。最初は空っぽで、段々灰色の煙のようなものが底に溜まっていく。空気より重いんだ。もちろんずっと溜まり続けるわけじゃない。箱の容量には上限がある。でも少しずつ溢れたり、にじみ出てきたりはしない。この箱は結構ちゃんと密閉してある。でも箱自体はそんなに強くない。つまり、ある時をもって爆発する。箱は完全に破壊される。箱はそもそも「保つ」ためにあるものだから、壊れたときには、また新しい箱ができるまで「保つ」ことができなくなる。だいたい箱に煙がたまって爆発するまで一年。新しい箱を作るまで三日ぐらいかかる。それが繰り返しくる。箱は何時でも感じることができるし、どれぐらい溜まっているかも大体わかる。でも爆発から再生までの周期は殆ど変わらないし、破壊されるのはどうしよもないみたいだ。
センター試験の申込書ですよ。何かイマイチ自分が受験するっていう感覚じゃない……説明聞いてても他人事みたいな。勉強しないといけないですよ。少なくとも英語はやる必要がある……
IRC BOT に Ruby 式評価する機能でもと。
def safe(lvl, tm=1) result = nil Thread::start(lvl, tm) do |level, time| $SAFE = level Thread::exclusive do timeout(time) do tl = Thread::list result = yield (Thread::list - tl).each {|th| th.join} end end end.join result end
果たしてこれでいいかは不明だけど、たぶんちゃんと動いてる。Thread.start { loop { sleep 0.1 } }; Thread.start { loop {sleep 0.1} }
みたいなのを投げても大丈夫。でも何かデッドロッ(あqwせdrftgyふじこlp
だめだ。上のじゃだめ。やっぱデッドロックしてるっぽい(Thread::critical = true
してみればエラーになる。 exclusive はエラー処理やってるから分からないだけだ)。他のスレッドに処理が移ってスレッド作られると困るから exclusive してるんだけど、なんか上手くいってない。とりあえず今のところ他のスレッドで新しいスレッド作ることはないから exclusive をコメントアウト。
まぁ原因は (Thread::list - tl) なんだけど。何故か全部のスレッドが入ってる。
よく分からないけど書き換え。critical 設定するとダメくさいのでもうアレやこれや。
def safe(lvl, tm=1) result = nil tl = Thread::list t = Thread::start(lvl) do |level| $SAFE = level result = yield end.join(tm) (Thread::list - tl).each {|th| th.kill} raise TimeoutError unless t result end