3

dbus を聞いているときに、初めて gobject に直面しました。メインループの設定方法を教えてくれるこのコードを見つけました。

Linux や Python で「usb デバイスが挿入されました」イベントをリッスンするにはどうすればよいですか?

しかし、今必要なのはそれを止める方法です。メインループには終了関数があり、キーボード割り込み例外から呼び出す方法を知っています。しかし、このメインループをスレッドに入れると、どうすれば停止しますか?

またはより一般的な: このループを独立して実行するだけでなく、メイン関数が終了したときに終了する適切な方法は何ですか?

私はあなたの助けに感謝します。

4

1 に答える 1

2

Pythonについては何も知りませんが、一般的にはloop変数を呼び出し元のスレッド(メイン関数)に渡し、loop.quit()完了したらそこから渡す必要があります。

ループ変数を渡すには、基本的に 2 つのオプションがあります。

  1. 簡単な方法:フォークloopするgobject.MainLoop()前に初期化して、両方のスレッドから利用できるようにします。
  2. 難しい方法: ループ スレッドで値を初期化した後、値をメイン スレッドに渡します。

スレッド間でデータを渡す (C での) 例は、GCond のドキュメント(push_data()およびpop_data()) に示されています。

于 2014-02-01T10:33:22.810 に答える