这是我的主要线程,除了启动其他线程然后在其他线程完成工作时永远休眠。
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
的提及,但我不确定如何保持捕获用户击键的能力。