【问题标题】:Scheduling threads without stopping one ?调度线程而不停止一个?
【发布时间】:2011-08-08 14:52:37
【问题描述】:

如果我有类似的东西:

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)条件变量。有人提到纤维不完全适合这里。我刚刚开始使用线程(任何类型的),因此将不胜感激有关此的任何建议。

【问题讨论】:

    标签: multithreading jruby scheduling


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多