2012-12-29 17 views
22

İzin ver, bir yuvaya bağlı bir sinyal değişikliğimi bildirelim. sinyali değiştiğinde, bildirme yuvasına bildirme çalışmaya başlayacaktır.Qt Sinyaller ve delikli iplik güvenliği

Şimdi ikinci bir değişiklik sinyali gönderilirse ve ilk bildirim yuvası yürütmeyi tamamlamazsa ne olur?

İkinci yuva ilk olarak aynı anda başlatıldı mı? Ve eğer öyleyse, Qt iplik güvenliğini ele alıyor mu, yoksa işlemek için programcıya kalmış mı?

cevap

29

connect işlevini kullanarak belirttiğiniz bağlantı türüne bağlıdır. Yuvası eşzamanlı olarak başlatmanın tek yolu, Qt::DirectConnection belirtmiş olmanız ve Yuvası'nın iş parçacığından farklı olarak iplik yayınlamasıdır. Bağlantı türünü çıkarırsanız, Qt::AutoConnection olur. Bu durumda, bir iş parçacığından bir sinyal gönderirseniz ve onu başka bir öğede yakalarsanız (ör., Ana GUI iş parçacığında) - Qt, bir aramanın mesaj sırasına çağrı gönderir ve tüm çağrıları sırayla yapar. Daha fazla bilgi için bunu okuyun - http://qt-project.org/doc/qt-4.8/threads-qobject.html#signals-and-slots-across-threads