Я считаю, что вы не надежно получить задержку суб-миллисекунды для полезных действий на практике (рабочий стол Linux является не в режиме реального времени система). Возможно, компиляция собственного ядра с CONFIG_PREEMPT
может немного помочь! Но это сильное ограничение (и для его преодоления нет никаких программных трюков).
Как Karsten Koop комментировали, вы можете использовать потоки или таймеры POSIX. Смотрите также time(7)
Как Drop прокомментировал, при компиляции в режиме C++ 11, рассмотреть вопрос об использовании <chrono>
(это более или менее оберточная clock_gettime
в C++ 11, соответствующем образом, ИЕ вы будете в состоянии мер небольшие задержки).
Конкретное решения Linux может быть использование timerfd_create(2) и опрашивать, что FD в главном цикле Qt (с использованием QSocketNotifier)
Если вы просто хотите мер (не акта) время с подп точности до миллисекунды , просто используйте clock_gettime(2)
Обратите внимание, что несколько операций Qt достаточно сложны, чтобы потребовалось больше миллисекунды для запуска. И человек не способен воспринимать (например, видеть на экране) субмиллисекундные задержки. Экран обновляется на частоте 60 Гц (или 144 Гц для некоторых дорогих экранов), поэтому вы не можете видеть такие небольшие задержки на нем.
Если вы не знакомы с программированием Linux, потребуется время, чтобы прочитать Advanced Linux Programming в того из гиперссылкой материала выше (ALP книга старше timerfd_create
)
Как насчет 'usleep' в рабочем потоке? Или посмотрите [Таймеры POSIX] (http://man7.org/linux/man-pages/man2/timer_create.2.html). –
'QElapsedTimer' позволяет, к сожалению, очень высокоточное время, но не для Linux. Может быть сторонний таймер, который будет делать то, что вам нужно. –
@JonHarper Дайте мне пример – BkarimCe