Hi Alex, On Apr 17, 2009, at 8:27 PM, Alex Vollmer wrote:
Hi folks,
Could someone shed a little light on how threads work in MacRuby? For example, if I do this:
Thread.new do 10.times do puts "Hi" sleep 2 end end
Does this run as a NSThread instance? Also does the MacRuby runtime have the Global Interpreter Lock or are MacRuby threads basically NSThreads?
As of MacRuby 0.4 and trunk, the following will create a native (pthread) thread that will run through YARV. It will acquire the YARV global lock during Ruby dispatch time (but not Objective-C dispatch time) because of thread-safety issues. The next release of MacRuby will have a different implementation and there won't be any global lock anymore, so threads will fully run in parallel. An NSThread is generally the same thing as a pthread, I am not aware of any big difference (except that it registers itself to the collector, but we do this too). The next release of MacRuby might perhaps expose an NSThread object for convenience. Laurent