「モーダル」ウィンドウを開く外部プログラムへの呼び出しがあります。これは、メインループと同じスレッドにあり、基になるウィンドウの再描画をブロックするためです。
プログラムは別のプロセスとして実行され、パイプを介してプログラムと通信しています。
私が読んだことから、メインループを追加するのは悪い習慣です。このロックアップを回避する正しい方法は何ですか?
問題は、メイン ループ全体をブロックすることなく、そのプログラムとの通信を行うために、自分のプログラムで別のスレッドを作成する方法です。
「モーダル」ウィンドウを開く外部プログラムへの呼び出しがあります。これは、メインループと同じスレッドにあり、基になるウィンドウの再描画をブロックするためです。
プログラムは別のプロセスとして実行され、パイプを介してプログラムと通信しています。
私が読んだことから、メインループを追加するのは悪い習慣です。このロックアップを回避する正しい方法は何ですか?
問題は、メイン ループ全体をブロックすることなく、そのプログラムとの通信を行うために、自分のプログラムで別のスレッドを作成する方法です。
非ブロッキング API を使用して、GSubprocess https://developer.gnome.org/gio/stable/GSubprocess.htmlなどの外部プログラムを実行するか、低レベルのスポーン API https://developer.gnome.org/glib/stableを使用します。 /glib-Spawning-Processes.html
スレッドを使用することもできますが、上記の API の方がはるかに簡単です。
サブプロセスの実行中に何らかの方法で制御をメイン ループに戻す必要があります。これが最終的な結果です。