[ruby-list:42987] Ruby/Tk+callcc

From: Hattori Kenta <hattori@...>
Date: 2006-11-08 06:14:08 UTC
List: ruby-list #42987
はじめまして、服部@ISPと申します。


早速の質問で恐縮なのですが、Ruby/Tkとcallccを使ってとあるプログラムを
作成しているのですが、実行時エラーに悩んでいます。

具体的には以下のような、一見なんでもなさそうなプログラムを実行すると、
'continuation called across trap'というエラーがでます。

#### test.rb
require 'tk'

Thread.new { Tk.mainloop }

count = 0
while true
  count = count + 1
  callcc {|k|
    p count
    k.call
  }
end
__END__

実行例:

% ruby test.rb
1
2
....
58
test.rb:10:in `call': continuation called across trap (RuntimeError)
        from test.rb:10
        from test.rb:8
---

ちなみに、ループが何回まわるかは、実行するたびに変わります。
また、rubyのバージョンは1.8.4で、上記現象はWindowsでも、
Linuxでも発生します。

上のコードでは、特にtrapをまたいだ継続呼び出しをしているとも
思えないので、ちょっと不可解です。
Ruby/Tkを使うときはcallccの使用はあきらめた方が良いので
しょうか。。。

最近、Rubyを始めたばかりなもので、
もし頓珍漢なことをしていたらごめんなさい。

以上、よろしくお願いします。
---
(株)システム計画研究所 技術本部 第5グループ
服部 健太 (E-mail:hattori@isp.co.jp)


In This Thread

Prev Next