qt Signals: queuedConnection против DirectConnection
понимание различия между DirectConnection и queuedConnection имеет решающее значение для эффективного использования сигнала в QT. Эти типы соединений регулируют, как сигналы испускаются и получают, особенно при работе с объектами, находящимися в разных потоках.
DirectConnection
при использовании DirectConnection сигнал эмиссии вызывает непосредственный призыв соединенного слота. Это означает, что метод слота будет выполнен в потоке объекта, излучающего сигнал. Это может быть проблематично, если метод слота не является защищенным потоком, потенциально приводит к тонким ошибкам, которые трудно идентифицировать. Когда сигнал испускается с использованием этого типа соединения, событие публикуется в цикле события объекта, получающего сигнал. Это событие впоследствии подвергается в очередь в очереди и выполняется всякий раз, когда контроль возвращается в цикл события. Этот метод обеспечивает надлежащую синхронизацию между потоками и гарантирует, что методы слотов вызываются в защитной форме. вовлечен. Выпуска.
] Пример реализации
рассмотрим два Qobjects, A и B, которые расположены на различных Threads.qobject a:
класс A: public Qobject { Q_object публика: void Emitsignal () { испускают что -то вроде (); } };
qobject b:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3