1

「モーダル」ウィンドウを開く外部プログラムへの呼び出しがあります。これは、メインループと同じスレッドにあり、基になるウィンドウの再描画をブロックするためです。

プログラムは別のプロセスとして実行され、パイプを介してプログラムと通信しています。

私が読んだことから、メインループを追加するのは悪い習慣です。このロックアップを回避する正しい方法は何ですか?

問題は、メイン ループ全体をブロックすることなく、そのプログラムとの通信を行うために、自分のプログラムで別のスレッドを作成する方法です。

4

1 に答える 1

1

非ブロッキング API を使用して、GSubprocess https://developer.gnome.org/gio/stable/GSubprocess.htmlなどの外部プログラムを実行するか、低レベルのスポーン API https://developer.gnome.org/glib/stableを使用します。 /glib-Spawning-Processes.html

スレッドを使用することもできますが、上記の API の方がはるかに簡単です。

サブプロセスの実行中に何らかの方法で制御をメイン ループに戻す必要があります。これが最終的な結果です。

于 2015-06-28T13:14:14.627 に答える