【发布时间】:2011-09-30 02:50:15
【问题描述】:
代码如下:
while 1
input = gets
puts input
end
这是我想做的,但我不知道该怎么做: 我想创建多个代码实例以在后台运行并能够将输入传递给特定实例。
Q1:如何在后台运行多个脚本实例?
Q2:如何引用脚本的单个实例,以便将输入传递给实例(Q3)?
Q3:脚本使用 cmd "gets" 来获取输入,我如何将输入传递到个人脚本的 get 中?
例如
假设我在后台运行三个代码实例,我将实例分别称为#1、#2 和#3。 我将“hello”传递给#1,#1 将“hello”放到屏幕上。 然后我将“world”传递给#3,而#3 将“hello”放到屏幕上。
谢谢!
更新: 回答了我自己的问题。找到了这个很棒的 tut:http://rubylearning.com/satishtalim/ruby_threads.html 和资源:http://www.ruby-doc.org/core/classes/Thread.html#M000826。
puts Thread.main
x = Thread.new{loop{puts 'x'; puts gets; Thread.stop}}
y = Thread.new{loop{puts 'y'; puts gets; Thread.stop}}
z = Thread.new{loop{puts 'z'; puts gets; Thread.stop}}
while x.status != "sleep" and y.status != "sleep" and z.status !="sleep"
sleep(1)
end
Thread.list.each {|thr| p thr }
x.run
x.join
感谢大家的帮助!帮助澄清了我的想法。
【问题讨论】:
-
你将如何指定你正在与哪个守护进程通信?您是否从命令行发送信息?您想要另一个与特定守护进程通信的 Ruby 程序吗?你能描述一下你真正想要完成的事情吗(比“获取”和“放置”更多的细节)?
-
我不知道如何选择与哪个守护进程进行通信,抱歉 - 没有说得足够清楚。是的,我正在从 cmd 行发送信息。我会尽量让它更清楚。