2011-08-03 79 views
1

如果我有这样的:不停止调度线程?

require 'xmpp4r' # xmpp4r is a ruby library for xmpp. 
    xmppobject.add_meessage_callback { |m| 
    # do something with |m| 
    } 
Thread.stop 

,主线程处于睡眠状态,然后才由回调启动线程继续运行。

但是,如果我有这样的事情:

require 'xmpp4r' 

    class Foo::App::Bar < Foo::App::Baz 

    def method1 
     xmppobject.add_message_callback { |m| 
     # do something with |m| 
     } 
    end 

end 

,其中属于富::应用程序的主线程必须是应用程序始终运行工作,我不能做一个使用Thread.stop在它上面,因此来自回调的线程不能完成它的工作。

这是在jruby上,我对irc的建议:1)使用纤维或2)条件变量。有人提到纤维不完全适合在这里。我刚刚开始使用线程(任何类型),因此将不胜感激这方面的任何建议。

回答

0

原来是一个非问题。我被Foo :: App抛出的错误误导了。