12

Linux/KDEの新しいプロジェクトのIPCメカニズムとしてD-Busを使い始めています。そして、私は、ドキュメントが実際には並行性をまったく扱っていないことを発見しました。D-Busサービスは、異なるクライアントからの複数の同時通話をどのように処理することが期待されていますか?スレッドモデルとは何ですか?サービスは、それがシングルスレッドであり、D-Busがそれ自体でリクエストをキューに入れると想定できますか?

4

1 に答える 1

8

プロトコルとして、D-Busはスレッド化に対応していません。

D-Bus接続はメッセージをシリアルに受信します。プロトコルレベルでは、メッセージへの応答は非同期です。つまり、送信者は、さらにメッセージを送信する前に応答を待つ必要はありません。

原則として、D-Busの実装はメッセージをサービスの実装に同時にディスパッチできますが、これを行うものはありません。

通常、D-Busの実装(または、必要に応じて「バインディング」)を使用すると、サービスは、着信メソッド呼び出しに同期または非同期のどちらで応答するかを、メソッドごとに(またはメソッド呼び出しごとに)決定できます。これの詳細は、使用している特定の実装次第です。

メソッド呼び出しに非同期で応答する場合、サービス実装は、複数の応答が保留されている間、すべての状態が一貫していることを確認する責任があります。常に同期的に応答する場合は、一度に1つのメソッド呼び出しのみを処理していることがわかります。

于 2010-01-03T02:38:04.703 に答える