Когда я создаю объект
QTimer
в Qt 5 и запускаю его с помощью функции-членаstart()
, создается ли отдельный поток, который отслеживает время и вызывает функциюtimeout()
через равные промежутки времени?
Например,
QTimer *timer = new QTimer;
timer->start(10);
connect(timer,SIGNAL(timeout()),someObject,SLOT(someFunction()));
Здесь, как программа узнает, когда происходит timeout()
? Я думаю, что это должно было бы выполняться в отдельном потоке, так как я не вижу, как последовательная программа могла бы отслеживать время и продолжать выполнение одновременно. Однако я не смог найти какую-либо информацию по этому поводу ни в документации Qt, ни где-либо еще, чтобы подтвердить это.
Я прочитал официальную документацию, и некоторые вопросы по StackOverflow, такие как эта и эта, похоже, очень связаны, но я не смог получить ответ через них.
Может ли кто-нибудь объяснить механизм, с помощью которого работает объект QTimer
?
В процессе поиска я обнаружил, что согласно этому ответу Билла упоминается, что
События доставляются ОС асинхронно, поэтому кажется, что происходит что-то еще. Есть, но не в вашей программе.
Означает ли это, что timeout()
обрабатывается ОС? Есть ли какое-то оборудование, которое отслеживает время и отправляет прерывания с соответствующими интервалами? Но если это так, то как много таймеров могут работать одновременно и независимо, как можно отслеживать каждый таймер отдельно?
Какой механизм?
Спасибо.