здравствуйте, интересует пара вопросов по QTimer т.к. в документации этого нету, я так понял:
1) допустим, есть код:
{
QTimer::singleShot(5000, this, [this](){ std::cout<<"hello world\n"; });
/*...какие-то долгие вычисления...*/
}
когда будет запущен таймер: сразу в строке где вызван singleShot, либо после выхода из scope(т.е. уже после долгих вычислений)?
2) когда 5 секунд прошло после запуска, коллбэк добавляется в очередь обработчиков событий? т.е. если есть 1 уже работающий коллбэк, 2 за ним в очереди, то наш коллбэк от таймера будет 4 уже, или сразу после отработки первого будет вызван, т.е. обгонит 2 последующих?
Когда наступает таймаут таймера, он не вызывает колбэк, он испускает (emit
) сигнал. Сигнал обрабатывается системой метаобъектов Qt, которая берёт список всех подключенных к нему слотов и помещает их в очередь событий (event loop) соответствующего потока. Функция выполнится, как только до неё дойдёт очередь. То есть да, если есть уже работающий слот, то другой будет ждать своей очереди. Но если слоты живут в разных потоках, то они могут выполняться и одновременно. Очерёдность определяется планировщиком задач операционной системы.
А таймер будет запущен сразу после вызова singleShot
.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Задачка, видимо, олимпиадная, на рекурсиюСобственно, надо пройти всю доску конем так, чтобы на каждой его клетке конь был только 1 раз
В каких случаях использовать данный синтаксис? Где использовать const, а где ссылку?
Доброго времени сутокИзучая dll, получил интересное задание - сделать библиотеку, работающую с std::string и сделать 2 exe, юзающих dll, одна из которых...
Скрипты instafeedjs + scrollForever подключаются в хедере сайта