[Kde-bindings] Using threads with QtRuby

Uriel uriel at inbox.ru
Fri Feb 5 16:55:28 UTC 2010

Thanks for your answers.
> Thats strange because Qt on my system uses to same glib event loop as 
> GTK uses
> and QtRuby still doesn't work well with Ruby threads as you say. Maybe 
> ruby is using some hook to periodically run code in threads I don't know.
> Threads in Ruby 1.8.x are really just broken, but it might be possible 
> to get
> QtRuby and Ruby threads working with Ruby 1.9.x.
Sorry for not telling you about versions of packages I'm using.
I'm on ArchLinux and have latest build of all packages. So Ruby is 
1.9.1, QtRuby is in package kdebindings-ruby 4.3.4, Qt is 4.5.3, glib is 
2.22.4 and GTK is 2.18.6 if it's important. :)
So then I'll try to find out how GtkRuby works with threads.
> This is basically what I do to make threads work which seems to work 
> great.  By calling Ruby's sleep method in a Timer, you allow the Ruby 
> thread scheduler to run:
This is really works great for me, thank you very much.
But would it be wrong to go a bit more further and add some extra code 
to Qt::Application?
Something like that:

class Qt::Application
   def timerEvent(ev)
     sleep 0.001
   alias :__oldExec :exec
   def exec
     startTimer 0

It can be more 'advanced': start timer only when new instance of the 
Thread class is created and stop when there is no more threads left.

More information about the Kde-bindings mailing list