В моем приложении у меня есть экземпляр QTimer
, сигнал которого timeout()
подключен к слоту в главном объекте окна, заставляя его периодически вызываться. Слот снимает изображение с камеры и сохраняет его на диск.
Мне было интересно, что произойдет, если сигнал испущен (из отдельного потока, где QTimer
выполняется, я полагаю), когда приемник (объект окна в основном потоке) в настоящее время занят (например, при взятии и сохранении предыдущего картина). Вызывается ли вызов в очереди и выполняется после завершения предыдущего вызова? Вся идея состоит в том, чтобы запустить ее через регулярные промежутки времени, но могут ли эти вызовы стоять в очереди, а затем вызываться случайным образом, когда управление возвращается в цикл событий, вызывая беспорядок? Как я могу избежать этого? Теоретически слот должен выполняться быстро, но, скажем, у аппаратного обеспечения возникла какая-то проблема, и там был ларек.
Я бы хотел, чтобы вызовы были удалены, а не поставлены в очередь в такой ситуации, и еще более полезной была бы возможность реагировать, когда это произойдет (предупредить пользователя, прекратить выполнение).