joystick.hの基本機能をラップするRuby拡張機能を使用して、Linux上のRubyでジョイスティックプログラミングを行っています。ジョイスティックイベントの取得は、デフォルトではブロック読み取りですが、ゲームループを中断させたくありません。
現在、私はジョイスティックにノンブロッキング呼び出しを行い、それを非常に高速なループで実行することで、それをハッキングしています。これは機能しますが、ジョイスティックのイベントをできるだけリアルタイムに近づけたいので、スクリプトで100%CPUを使用するようになります。
私は次のようなことをしようとしています
input = Thread.new do
while e = joystick.event
@event = e
end
end
main = Thread.new do
while true
sleep 0.1
puts @event
end
end
しかし、それでも、joystick.event
呼び出しはメインスレッドをブロックします。Rubyスレッドがどのように機能するのか、またはLinuxでジョイスティックがどのように機能するのかを完全に誤解していますか?それとも、これにアプローチするまったく異なる方法がありますか?