Je commence à utiliser D-Bus comme mécanisme IPC pour un nouveau projet sous Linux/KDE. Et j'ai découvert que la documentation ne traite pas du tout de la concurrence. Comment les services D-Bus doivent-ils traiter plusieurs appels simultanés provenant de différents clients? Quel est le modèle de threading? Un service peut-il supposer qu'il est mono-threadé et D-Bus mettra en file d'attente les demandes par lui-même?Modèle de filetage D-Bus
Répondre
En tant que protocole, D-Bus n'adresse pas le thread.
Les connexions D-Bus reçoivent un message en série. Au niveau du protocole, les réponses au message sont asynchrones: c'est-à-dire que l'expéditeur n'a pas à attendre les réponses avant d'envoyer plus de messages.
Bien qu'en principe une implémentation D-Bus puisse envoyer simultanément des messages à des implémentations de service, je ne connais personne qui le fasse. En règle générale, une implémentation D-Bus (ou "binding", si vous voulez) permet au service de décider pour chaque méthode (ou même pour chaque appel de méthode) de répondre aux appels de méthode entrants de manière synchrone ou asynchrone. Les détails de ceci sont à la mise en œuvre particulière que vous utilisez.
Si vous répondez aux appels de méthode de manière asynchrone, votre implémentation de service est responsable de s'assurer que tout état est maintenu cohérent alors que plusieurs réponses sont en attente. Si vous répondez toujours de manière synchrone, vous savez que vous ne traitez qu'un seul appel de méthode à la fois.
- 1. Modèle de filetage: chaînage et bouclage
- 2. (MVVM) Voir le modèle Voir le modèle et le filetage
- 3. DBus query
- 4. Modèle de filetage pour un moteur de jeu
- 5. Un meilleur modèle de filetage pour cette classe?
- 6. Comment déterminer le modèle de filetage d'une bibliothèque COM donnée?
- 7. Numéro de fusion DBus-Cherrypy
- 8. dbus: connexion encastrée?
- 9. DBus-Server en Java?
- 10. Dbus - contrôle des défauts
- 11. Problèmes DBus Python
- 12. allocation de filetage CUDA
- 13. Problème de filetage iPhone
- 14. Filetage de base Question
- 15. Filetage de messagerie
- 16. Linux Shutdown avec dbus-send
- 17. SESSION_BUS Python DBUS - dépendance X11
- 18. Filetage ASP.NET & AJAX
- 19. DBUS- Diff "Service" et "Nom de bus"
- 20. Avantages de l'assemblage de filetage
- 21. Processus de filetage dans asp.net
- 22. Condition de course sans filetage?
- 23. Compteurs de performance et filetage
- 24. Filetage ASP.NET + question de conception
- 25. Problème de répartiteur/filetage WPF
- 26. Filetage en C#
- 27. python tordu filetage
- 28. Filetage en utilisant AJAX
- 29. asp: minuterie avec filetage
- 30. Filetage et noyaux
Merci. Ceci est cohérent avec ce que j'ai vu dans Kubuntu en utilisant la liaison Qt. Si je définissais un point d'arrêt dans ma méthode de service à distance (emplacement) et que je l'appelais ensuite à partir de deux clients, le deuxième client était complètement bloqué jusqu'à ce que mon code ait fini de traiter le premier message. Mais je n'étais pas sûr de pouvoir compter sur ça. –