我在Ruby中实现了一个网络,我们在进行多线程打印时遇到了一些问题。我们有两个作为监听器的线程,因此它们总是处于打开状态(就像服务器实现一样)。我们想用这两个线程打印到stdout,但似乎一次只能打印一个。
例如,我们有"驱动程序"它解析文件并生成线程,我们想在生成线程之前打印一些我们从文件中解析的信息。产生的线程有一些我们想要打印到stdout的东西,仅用于调试目的。然而,我们在运行程序时看到的唯一内容是从我们生成的线程打印。我们所做的就是使用给定的函数启动线程并加入它。我们在这里做错了什么?
def populateFromFile()
file = File.open('filename.csv')
while( (line = file.gets) != nil)
#do processing and populate the neighbors array
end
#When we do not start the thread below, we definitely see this output
$neighbors.each {|neighbor| puts neighbor.to_s}
end
def listenerFunc
while(true)
command = STDIN.gets
#when this thread is started, we ONLY see this output.
puts command
end
end
t1 = Thread.new{listenerFunc}
t1.join