3

複数のソースからのメッセージを待っている間にブロックするメイン ループを作成するにはどうすればよいですか? 私が理解しているように、イベント処理ループを記述する好ましい方法は、イベントを待っている間にブロックすることです。

ただし、メッセージが複数のソースから送信される可能性がある場合、ブロックを正しく処理するにはどうすればよいでしょうか?

ユーザー入力イベントと nanomsg 経由で送信されたメッセージの両方に応答する GTK GUI を書きたいと思います。

GTK では、 を呼び出すgtk_main()か、ブロックしない方法で を使用して、そのイベントを処理できますgtk_main_iteration_do (FALSE)

Nanomsg は、メッセージをポーリングするだけでなく、ブロッキング モードまたは非ブロッキング モードでメッセージを受信できます。

ソースが最初に利用可能な「ブロック解除」を入力するまで、何らかの方法でブロックすることは可能ですか? sleepつまり、すべてのイベントに応答し続けるものを使用する代替手段はありますか?

4

1 に答える 1

3

GMainLoopUI を変更する呼び出しがメインの GTK+ ループで発生する場合は、GTK+ アプリケーションで必要な数のスレッドを使用できます (インスタンスの使用を強制されることはありません)。

この回答では、100 個のスレッドが同じユーザー インターフェイスを更新する例を示しました。

最後に、フォークして自分のスレッドで使い慣れたもの (ポーリング、ブロックなど) を使用し、通知が必要な場合 (つまり、UI を変更する場合) にのみ注意してください。

于 2015-05-18T18:13:39.993 に答える