2

私のプログラムには、dbus からこのメソッドを呼び出すメイン ループがあります。このコールバック内で、応答を処理し、応答を送り返しています。問題は、時間がかかる場合があるため、おそらく DBUS からのメッセージの受信をブロックすることです。質問 - 複数のスレッドから同じ接続で dbus_connection_read_write_dispatch() メソッドを呼び出すことはできますか? その後、前のメッセージが処理されている間に新しい DBUS メッセージを受信する可能性があります。または、コールバックが呼び出されてから、メインループとは別のスレッドで応答を処理することをお勧めしますか?

ありがとうございました

4

2 に答える 2

1

関数dbus_threads_init_default()を少なくとも 1 回呼び出した場合は、複数のスレッドからdbus_connection_read_write_dispatch()を呼び出すことができます。代わりに、単一のスレッドで dbus ディスパッチャーを実行し、スレッドプールを使用してコールバックからのデータを処理することをお勧めします。 詳細については、 dbus_threads_init_default()を参照してください。

于 2013-07-20T23:06:45.050 に答える