Ruby C 拡張機能として単純なウィンドウ ライブラリを実装しています。Windows にはhandle_events!
、ネイティブ イベント ループに入るメソッドがあります。
問題は、ウィンドウごとに 1 つのイベント ループとメソッド ブロックが必要なことです。メソッドがすぐに戻り、ループが別のスレッドで実行されるようにしたいと思います。これを達成するための最良の方法は何ですか?
rb_thread_call_without_gvl
イベント ループ関数rb_thread_call_with_gvl
を呼び出すために使用してから、s であるウィンドウのコールバックを呼び出すために使用してみましたProc
。完全なソース コードはここにあります。
それでも機能しますが、意図したとおりではありません。メソッドはまだブロックされています。これは Ruby のスレッド モデルでも可能ですか?