--90e6ba6e8ef85e1adf04b7d4d738 Content-Type: text/plain; charset=ISO-8859-1 unsubscribe; #unsubscribe; # unsubscribe On Tue, Jan 31, 2012 at 4:12 PM, Haase, Konstantin < Konstantin.Haase / student.hpi.uni-potsdam.de> wrote: > the GIL is *not* supposed to lift if some threads enters native code... > > On Jan 31, 2012, at 08:05 , Grigory Petrov wrote: > > > Hello > > > > Ruby 1.9 suppose to have native threads, and GIL is supposed to lift > > if some threads enters native code (like GUI toolkit main loop or C > > implementation of some Ruby lib). But if i start following simple code > > sample that displays GUI in main thread and do some basic math in > > separate thread - the GUI will hang out badly and dragging window will > > redraw ~ every 10 seconds or so :(. I have checked with different GUI > > toolkit, Qt (qtbindings gem) - it behaves exactly same. Tested with > > Ruby 1.9.3-p0 on Windows 7 and OSX 10.7 > > > > require 'tk' > > require 'thread' > > require 'rexml/document' > > Thread.new { loop { a } } > > TkRoot.new.mainloop() > > > > Same code in Python works fine without any GUI hangs: > > > > from Tkinter import * > > from threading import * > > class WorkThread( Thread ) : > > def run( self ) : > > while True : > > a > > WorkThread().start() > > Tk().mainloop() > > > > What i'm doing wrong? > > > > > --90e6ba6e8ef85e1adf04b7d4d738 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable <div dir="ltr"><br clear="all"><div dir="ltr"> <p>unsubscribe; #unsubscribe; # unsubscribe</p></div> <br><br><div class="gmail_quote">On Tue, Jan 31, 2012 at 4:12 PM, Haase, Konstantin <span dir="ltr"><Konstantin.Haase / student.hpi.uni-potsdam.de></span> wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">the GIL is *not* supposed to lift if some threads enters native code...<br> <br> On Jan 31, 2012, at 08:05 , Grigory Petrov wrote:<br> <br> > Hello<br> ><br> > Ruby 1.9 suppose to have native threads, and GIL is supposed to lift<br> > if some threads enters native code (like GUI toolkit main loop or C<br> > implementation of some Ruby lib). But if i start following simple code<br> > sample that displays GUI in main thread and do some basic math in<br> > separate thread - the GUI will hang out badly and dragging window will<br> > redraw ~ every 10 seconds or so :(. I have checked with different GUI<br> > toolkit, Qt (qtbindings gem) - it behaves exactly same. Tested with<br> > Ruby 1.9.3-p0 on Windows 7 and OSX 10.7<br> ><br> > require 'tk'<br> > require 'thread'<br> > require 'rexml/document'<br> > Thread.new { loop { a = 1 } }<br> > TkRoot.new.mainloop()<br> ><br> > Same code in Python works fine without any GUI hangs:<br> ><br> > from Tkinter import *<br> > from threading import *<br> > class WorkThread( Thread ) :<br> > def run( self ) :<br> > while True :<br> > a = 1<br> > WorkThread().start()<br> > Tk().mainloop()<br> ><br> > What i'm doing wrong?<br> ><br> <br> <br> </blockquote></div><br></div> --90e6ba6e8ef85e1adf04b7d4d738--