阻止线程STDIN监听器互相干扰

时间:2016-10-25 16:20:07

标签: ruby

这是我的主要线程,除了启动其他线程然后在其他线程完成工作时永远休眠。

require 'io/console'
4.times { Thread.new { loop { App.process_char(STDIN.getch) } } }
loop { sleep }

这在程序的持续时间内运行,并将所有单独的击键发送到App.process_char。但是,某些输入将导致此方法运行额外的gets.chomp。这不起作用 - 它没有得到输入,因为其他线程正在吃它。

我认为在调用gets.chomp之前,可以将STDIN与现有线程侦听器隔离开来。在搜索过程中,我看到了重新定义$stdin$stdout的提及,但我不确定如何保持捕获用户击键的能力。

0 个答案:

没有答案