宮木です。

ruby-gtkを使っていてThreadの中でsocketのgetsやreadlineを
やると妙に時間が掛かるのですが、どうしてなんでしょうか。

例えば、以下の様なプログラムを書くと、connect/login/chdir
と各数秒ずつかかります。

require 'ftplib'
require 'gtk'

class Window < Gtk::Window
  def initialize
    super(Gtk::WINDOW_TOPLEVEL)
    set_title('test')
    @bt = Gtk::Button.new('転送')
    @bt.show
    add @bt
    @ftp = FTP.new

    @bt.signal_connect('clicked'){trans}
  end

  def trans
    @th = Thread.start{
      @bt.set_sensitive false
      @ftp.connect('host1')
      @ftp.login('guest','passwd')
      @ftp.chdir('tmp')
      @ftp.getbinaryfile('testdata.dat','testdata.dat',4096){
	print '#'
      }
      puts '#'
      @bt.set_sensitive true
    }
  end
end

win = Window.new
win.show

Gtk.main

--
E-mail miyaki / wni.co.jp 宮木 昌広