2010-01-02 18 views
8

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

5

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

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. –

İlgili konular