调度线程而不停止一个?

时间:2011-08-03 18:08:31

标签: multithreading jruby scheduling

如果我有类似的话:

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

,属于Foo :: App的主线程必须始终运行才能使应用程序正常运行,我无法对其执行Thread.stop,因此来自回调的线程无法完成其工作

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

1 个答案:

答案 0 :(得分:0)

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