2012-10-29 33 views
1

我有一个系列的嵌套循环在多线程的Ruby on在我的控制器的Rails

x.downto(0) 
    y.downto(0) 
     z.downto(0) 

我想问一下我是否能达到在多线程有点像

#pragma omp parallel for 

确实在拆这些C.

我曾尝试使用

Thread.new do 

方法,但它似乎没有任何影响。

+0

MRI有GIL,所以即使你启动了多个线程,一次只能运行一个线程。尝试使用没有GIL的ruby(jruby/rubinius)。 –

+0

是的,我最终使用jruby。谢谢。 – avlach

回答

0
Thread.new{ 
    //some function 
}  

一定会起作用,但在你的情况,如果你喜欢应用

x.downto(0) 
Thread.new { 
    y.downto(0) 
    Thread.new { 
     z.downto(0) 
    } 
} 

它创建多个嵌套线程,但它应该影响。我还没有遇到过这种情况,但我觉得这可能有帮助。

+0

谢谢你的思维方式,我这样做,并使用互斥体来保护我的变量。 '0.upto(1)do | i | b = Thread.new { \t 0.upto(1)do | j | \t a = Thread.new { \t \t 0.upto(1)do | k | \t \t m.synchronize { \t \t #CODE这里\t \t \t \t \t \t \t } \t \t 端\t \t } \t端; \t a.priority = 2; \t a.join; } end; b.priority = 1; b.join;' – avlach

相关问题