Ruby多线程打印标准输出

时间:2015-11-18 17:41:16

标签: ruby multithreading

我在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

0 个答案:

没有答案