提个问题,关于Ruby实现伪多进程

提个问题,关于Ruby实现伪多进程

各位:

目前我想用ruby在windows上实现以下事情,起2个进程(或线程),
其中一号进程(线程)读取命令行的用户输入并做出响应;
二号进程(线程)后台处理文件,当处理到某个特定文件的时候自动关闭一号和二号进程(线程),程序自动进入另外的处理。

以上内容我尝试使用ruby的线程实现,但是获取命令行输入使用gets方法,就会发生阻塞,二号线程一直被阻塞,郁闷啊
在linux下使用fork就很得心应手,但是想在linux上实现 应该怎么做啊,请大家指教

代码如下 请指教


$flag = 0
$sat = 0

thr1 = Thread.new do
 while 1
  puts "WAIT>"
  str = $stdin.gets
  if str.chomp == "exit"
   break
  else
   puts str
  end
  end
  if($sat == 1)
  Thread.pass
  end
  #sleep 1
 end

thr2 = Thread.new do
 while 1
  if ($flag > 200) then
  thr1.kill
  exit
  end
  $flag += 1
  puts $flag
  $sat = 1
  sleep 1
  $sat = 0
 end
end

thr1.join

puts "All end"
#eof
你的程序跑的可以距,2号线程并没有阻塞呀.如果阻塞了,你的puts $flag怎么能输出值出来了?
我想让2号线程独立运行
但目前的情况是程序运行了一号线程打印出“WAIT>”
然后二号线程打印出 $flag的值 “1”
然后程序就等待了 (此时整个程序是卡在一号线程的 str = $stdin.gets语句上)
一定要用户在命令行上输入点什么按个回车
程序才能继续处理
一号线程再打印出“WAIT>”
然后二号线程再打印出 $flag的值 “2”
然后又卡在一号线程的“gets”了

二号线程也歇菜不走了。。。

怎么让二号线程能独立的动起来啊?
没有,我的运行情况是,在1号在wait的时候,2号不断的在打印值,说明2号线程并没有阻塞.
呃?您用得什么 ide环境?
在什么环境下运行的啊?
顶楼的程序是在windows下运行有问题,请大家帮忙指点
我在linux下运行的,,
已经自己解决了。。
各位打扰了。。。。
windows和linux有很大的区别,,,,