У меня есть два сигнала A и B, излучаемые один за другим с объекта в потоке X, а два связанных слота находятся в основном потоке. Соединение - QueuedConnection (из-за многопоточного соединения). Мой вопрос: порядок сигналов, соблюдаемых при их вызове слотам, или есть шанс, что они будут выполнены в произвольном порядке?Порядок выполнения сигнала с Qt :: QueuedConnection
8
A
ответ
6
Оба ваших сигнала будут поставлены в очередь в одной очереди событий X-потока, поэтому соответствующие интервалы будут выполняться в порядке поступления сигналов.
Но в следующем случае вы не можете полагаться на порядок выполнения слотов:
signal A connected to a slot in X thread
signal B connected to a slot in Y thread
Кроме того, существует тип Qt::BlockingQueuedConnection
соединение. Если вы подключите свой первый сигнал к нему, ваш текущий поток будет заблокирован, пока соответствующий слот в другом потоке не завершит работу.
5
В соответствии с текущими источниками QT (5. *) они будут отправляться в последовательности, в которой они испускались с использованием алгоритма FIFO. Но, как указано в комментарии, в документации нет ничего, что определяет этот порядок, поэтому я бы не предложил ретранслировать на это поведение.
Смежные вопросы
- 1. Qt соединить два сигнала вместе с использованием QueuedConnection
- 2. Qt :: QueuedConnection from QML
- 3. Сигналы Qt (QueuedConnection и DirectConnection)
- 4. Проблема с Qt :: QueuedConnection, сигнал доставляется после отключения
- 5. Qt, соединяющий два сигнала и один слот
- 6. singleHow Qt :: QueuedConnection работает в одном приложении с потоком?
- 7. Слот сигнала Qt с потоками
- 8. Отображение сигнала Qt
- 9. Qt :: QueuedConnection вызвать максимум один раз за цикл событий итерации
- 10. Есть ли что-то аналогичное Qt :: QueuedConnection в .NET?
- 11. Изменить порядок подключения слота сигнала
- 12. Порядок выполнения выполнения DOM
- 13. сигнал кварта из не-кварт нити, QueuedConnection
- 14. Ящик сигнала ЭКГ с использованием Qt
- 15. QT connect crash с использованием принятого сигнала
- 16. Qt: ожидание сигнала с тайм-аутом
- 17. Segfault на излучение сигнала Qt
- 18. Передача сигнала Qt; наследующий QAbstractProxyModel
- 19. Qt Подключение сигнала к слотам
- 20. Qt: Основная основная часть сигнала
- 21. Слот сигнала QT не работает
- 22. слот сигнала QT не работает
- 23. Qt - нет такой ошибки сигнала
- 24. Реализация Qt-сигнала QTcpSocket ReadyRead
- 25. Проверка всего соединения сигнала/слота Qt
- 26. Порядок изменения фокуса Qt
- 27. QT Резьба, порядок сигналов
- 28. Qt сигнала слоты Типы видимости класса
- 29. Javascript порядок выполнения с SetTimeout()
- 30. Порядок выполнения кода с продолжением ;?
Я всегда думал, что они выполнены в порядке эмиссии, потому что они будут добавлены как события в очереди событий, поскольку они испускаются с одинаковым приоритетом (потому что по каким критериям он изменит приоритет?). Однако я не могу найти какие-либо документы, чтобы подтвердить это, и я не посмотрел в исходном коде ... – cmannett85