所以我试图通过终端的一次调用运行我的ruby(无轨道)应用程序,即' ruby run.rb '。但是我有两个需要运行的脚本, app.rb 和 app2.rb ,问题是,这两个脚本都没有完成 - 它们继续运行为了保持系统运行,这意味着其中一个脚本永远不会运行 - 它调用第一个脚本(app.rb),而第二个脚本(app2.rb)不需要同时运行这些脚本!
当我打开另一个命令行并且只在每个命令行中运行一个脚本时,它确实有效。
我试过了:
def runApp
system("ruby app.rb")
end
def runApp2
system("ruby app2.rb")
end
t1 = Thread.new{runApp()}
t2 = Thread.new{runApp2()}
t1.join
t2.join
然而,这只会运行第一个线程(运行app.rb的线程),因为它一直在运行。任何想法如何也可以同时运行第二个线程?
:编辑:其中一个脚本使用 Sinatra gem ,另一个脚本每十秒调用一次其中一个函数。
答案 0 :(得分:0)
所以我找到的一个可能的解决方案是
for ($i = 0; $i < 10; $i++)
if ($i % 2 == 0)
echo $i;
这只适用但是如果从linux运行我想也是如此,我仍然会欣赏任何进一步的解决方案。
答案 1 :(得分:0)
根据documentation你可以这样做:
threads = []
threads << Thread.new{runApp()}
threads << Thread.new{runApp2()}
threads.each { |thr| thr.join }
我想这可行,因为each
是平行的。