我正在尝试编写服务器。
require 'socket'
server = TCPServer.open(2000)
loop {
Thread.start(server.accept) do |client|
client.puts(Time.now.ctime)
class DisplayMsg
def self.msg(msg)
client.puts msg
client.close
end
end
client.puts "Select 1,2,3"
while user_input = client.gets.chomp
case user_input
when "1"
client.puts "Hello"
when "2"
client.puts "Alo"
when "3"
DisplayMsg.msg("Exiting")
end
end
end
}
通过调用类中定义的函数,我尝试Exit
时就可以了。在那里,程序挂起并等待。
我的猜测是没有调用该函数,因为当我将调用交换到client.puts
的函数时,它可以工作。
感谢任何帮助/指示。
答案 0 :(得分:1)
当您启动子线程时,主线程将不会等待子线程结束,并且将在子线程完成其工作之前完成,除非您join
子线程。