
エントリーの編集

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント1件
- 注目コメント
- 新着コメント
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Rubyの大域脱出はどのように実現されているか - Qiita
def timeout(sec) bl = proc do y = Thread.start { sleep sec } result = yield(sec) y.kill y.join re... def timeout(sec) bl = proc do y = Thread.start { sleep sec } result = yield(sec) y.kill y.join return result end bl.call caller(0) end timeout(100) do foo.bar end ところが、実際にはbl.callでVMを起動する時のISeqがfoo.barのあるブロックになってしまい、そこでfoo.barを呼び出した後普通に次の行に抜け、本来大域脱出により到達しないはずのcaller(0)の呼び出しに到達してしまいました。 gdbで見てみるとbl.callからvm_call_opt_call経由でinvoke_blockにより積まれているcfpのiseqには正しいiseqがセットされ、実行され始めていた。なので上記の引用の内容は間違っていた。 一
2024/10/05 リンク