Пользовательские темы? - PullRequest
2 голосов
/ 03 октября 2009

Как создать собственные потоки для запуска в приложении 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 Ответ

1 голос
/ 01 августа 2010

Я знаю, что 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

...