Linux/KDE'de yeni bir proje için IPC mekanizması olarak D-Bus kullanmaya başladım. Ve belgelerin gerçekte eşzamanlılığı hiç ele almadığını keşfettim. D-Bus hizmetlerinin farklı istemcilerden gelen çoklu eş zamanlı çağrılarla nasıl başa çıkması bekleniyor? İplik modeli nedir? Bir servis, tek iş parçacığı olduğunu ve D-Bus'ın istekleri kendi başına sıralayacağını varsayabilir mi?D-Bus iş parçacığı modeli
cevap
Protokol olarak, D-Bus iş parçacığına hitap etmiyor.
D-Bus bağlantıları seri olarak mesaj alır. Protokol seviyesinde, mesajın asenkronize olduğu yanıtlar: yani gönderen daha fazla mesaj göndermeden önce cevapları beklemek zorunda değildir. Prensip olarak bir D-Bus uygulaması, servis uygulamalarına aynı anda mesaj gönderebilirken, bunu yapanlardan hiçbirini bilmiyorum.
Tipik olarak, bir D-Bus uygulaması (veya "bağlayıcı"), servisin, her yöntem için (veya her yöntem çağrısı için) senkronize veya eşzamansız olarak gelen yöntem çağrılarına yanıt verip vermeyeceğine karar vermesine izin verir. Bunun ayrıntıları, kullanmakta olduğunuz uygulamaya bağlıdır.
Yöntem çağrılarına eşzamansız olarak yanıt veriyorsanız, hizmet uygulamanız, birden çok yanıt beklemede iken herhangi bir durumun tutarlı tutulduğundan emin olmaktan sorumludur. Her zaman senkronize yanıt verirseniz, bir seferde sadece bir yöntem çağrısı ile uğraştığınızı bilirsiniz.
- 1. Python 'baskı' ++ tabanlı iş parçacığı modeli
- 2. iş parçacığı içinde yerel depolama iş parçacığı
- 3. İş parçacığı tanıtıcısı iş parçacığı tanıtıcısı
- 4. iş parçacığı
- 5. Kabuk dbus-gönderen C içinde dbus çağrı
- 6. Bir iş parçacığı oluşturma işlevine
- 7. İş parçacığı, iki iş parçacığı arasındaki iletişim C#
- 8. CountdownTimer UI iş parçacığı güncelleştiren çalışan iş parçacığı içinde
- 9. UI iş parçacığı üzerinde görev sürdürme, arka plan iş parçacığı
- 10. Bir iş parçacığı veya iş parçacığı için bir DAO DAO?
- 11. Windows iş parçacığı havuzu ve CLR iş parçacığı havuzu
- 12. Qt: Arka plan iş parçacığı yenileme UI iş parçacığı
- 13. Django/sqlite3 "OperationalError: iş parçacığı yok" iş parçacığı üzerinde
- 14. Tomcat iş parçacığı havuzundaki iş parçacığı sayısı nasıl artırılır?
- 15. Hatalı iş parçacığı
- 16. Kinect ile iş parçacığı
- 17. Posix iş parçacığı öğretici
- 18. Python iş parçacığı dökümü
- 19. İş parçacığı durduruluyor
- 20. gdb - iş parçacığı günlüğü
- 21. UI'dan ayrı iş parçacığı
- 22. WPF iş parçacığı C#
- 23. iş parçacığı afinitesi
- 24. İş parçacığı güvenli Queue
- 25. Bir "gerçek" iş parçacığı
- 26. Maksimum iş parçacığı sorunu
- 27. Ayrı iş parçacığı içinde
- 28. notifyAll iş parçacığı uyanıyor.
- 29. 'sys.excepthook' ve iş parçacığı
- 30. İş parçacığı önceliğinin değiştirilmesi
Teşekkürler. Bu, Qt bağlamasını kullanarak Kubuntu'da gördüğüm şeyle tutarlıdır. Uzak hizmet yöntemimde (yuva) bir kesme noktası belirledikten sonra iki istemciden aradıysam, ikinci istemcim kodum ilk iletiyi işleyen bitene kadar tamamen engellendi. Ama buna güvenebileceğime emin değildim. –