自定义线程?

时间:2009-10-03 15:39:24

标签: ruby multithreading gtk dbus

如何创建自定义线程以在Gtk应用程序中运行?

鉴于这个简单的例子:

@w = Gtk::Window.new "testtest"
@l = Gtk::Label.new "test"
@w.add @l
@w.show_all
Gtk.main

我怎么能运行这样的线程?

Thread.start { loop { puts 'thread running'; @l.text = Time.now.to_s; sleep 1 }}

我使用基于超时的方法使用#timeout_add,但这不是很好,并且不能用于我真正想要实现的目的:等待dbus信号。

我尝试了很多东西,每个东西要么挂起gtk线程,要么挂起我自己的线程。我也尝试使用http://ruby-gnome2.sourceforge.jp/hiki.cgi?tips_threads,但我不确定它是否真的是同一个问题)

1 个答案:

答案 0 :(得分:1)

我知道Redcar从gtk迁移,因为我认为它无法使测试正常工作。

http://redcareditor.com/blog/2009/08/redcar-is-moving-to-jruby/

http://groups.google.com/group/redcar-editor/browse_thread/thread/1a4d4718cf10c170/fa5e481d6365cb41?lnk=gst&q=gtk+test#fa5e481d6365cb41

所以你实际上可以问丹尼尔或在那个邮件列表上。

在诊断悬挂方面,我想你可以使用strace或什么不能看到它挂在哪里。同样运行1.9可能会有所帮助,因为您可以在二进制扩展中将某些C调用设置为“非阻塞”。 GL。 -r