2011-08-03 74 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拋出的錯誤誤導了。