【发布时间】: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