6

asyncore同じをdbus介して統合することは可能main loopですか?

通常、DBus の統合はglibメイン ループを介して行われます。asyncoreこのメイン ループを統合する、dbus を使用することは可能asyncoreですか?

4

3 に答える 3

7

asyncore最悪。glibすでに非同期のものを提供しているので、glibの mainloop を使用してすべてを実行してください。

于 2010-01-27T18:32:13.930 に答える
1

私は、自分のプロジェクトの1 つに簡単なGSourceラッパーを書きました。AsyncoreGSource

適切な に添付するだけMainContextです:

source = AsyncoreGSource([socket_map])
source.attach([main_context])

当然のことながら、デフォルトはそれぞれasyncore.socket_mapデフォルトMainContextです。

monkey-patchingasyncore.socket_mapGSource試すこともできます。これは、 .

于 2011-01-14T09:29:48.103 に答える
0

おそらく完全に合理的な答えが得られましたが、別のアプローチがあります-asyncoreのループ自体を使用する必要はありません。asyncore.loop を 0 のタイムアウトと 1 のカウントで呼び出すだけで、反復が停止し (したがって、関数名が完全に誤解を招きやすくなります)、ソケットが 1 回だけポーリングされます。必要に応じてこれを呼び出します。

glib の非同期サポートについては何も知りませんが、スレッドが必要な場合は、select または poll を使用し、追加のスレッドを生成する必要がないため、この方法で asyncore を使用することでパフォーマンスが向上する可能性があります。

于 2010-01-28T12:02:26.043 に答える