crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Задержка в миллисекундах
Ignes
  опции профиля:
сообщение 19.11.2010, 0:57
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 15.11.2010
Пользователь №: 2188

Спасибо сказали: 0 раз(а)




Репутация:   0  


Понадобилось сделать в теле цикла на каждом шаге задержку в 5 миллисекунд, на просторах интернета нашел банальный пример:

            time_t start_time,cur_time;

            time(&start_time);

            do
            {
                time(&cur_time);
            }
            while((cur_time - start_time)<5);


Но t_time оперирует только с секундами, а мне нужны миллисекунды.
Справочник по QT мне ничего не дал.

Есть ли какие варианты реализовать пяти миллисекундную задержку в цикле, не прибегаю к банальному
for (i=1; 1<value; i++) {}


:blink:

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Ignes
  опции профиля:
сообщение 19.11.2010, 1:28
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 15.11.2010
Пользователь №: 2188

Спасибо сказали: 0 раз(а)




Репутация:   0  


Простите, не в том разделе тему опубликовал. Сам в шоке. Буду признателен за перенос в нужный раздел.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 19.11.2010, 7:47
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Ignes, таким образом задержку точно не сделаешь нормально. А пустой цикл оптимизатор вообще выкинет, скорее всего

присмотрись к функциям
void QThread::msleep ( unsigned long msecs ) [static protected] //milliseconds
void QThread::usleep ( unsigned long usecs ) [static protected] // microseconds

но ТОЧНО всё равно не выйдет :)

Сообщение отредактировал Алексей1153 - 19.11.2010, 7:47
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 19.11.2010, 10:16
Сообщение #4


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


выйдет точно, если смотреть сюда
там и разные варианты рассмотрены, и кроссплатформенные решения.
у меня работает под вендой с точностью до 100-200 микросекунд, под линём с точностью до 8-10 микросекунд.
если нужна только венда и не очень высокая точность(плюс-минус несколько миллисекунд), то смотри вендозные мультимедиа таймеры, у них разрешение миллисекундное (это для последних вендов, начиная с 2K).
если хочешь скорости - не используй веднозный Sleep: у него квантование около 15 миллисекунд.

Сообщение отредактировал Iron Bug - 19.11.2010, 10:18
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Ignes
  опции профиля:
сообщение 19.11.2010, 11:30
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 15.11.2010
Пользователь №: 2188

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вот теперь не знаю - то ли смеяться, то ли горевать...

Чтобы создать банальную задержку в цикле надо такие костыли изобретать :blink:

Ну что ж - попробую все варианты, отпишусь после.

Цитата
не используй веднозный Sleep: у него квантование около 15 миллисекунд.


Вот если бы он хотя бы работал под *nix-системой, подошел бы мне. А так - Only Win :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 19.11.2010, 11:52
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Ignes @ 19.11.2010, 11:30) *
Чтобы создать банальную задержку в цикле надо такие костыли изобретать :blink:

Это на первый взгляд она такая банальная, но если вспомнить, что помимо твоего процесса в системе может крутиться еще несколько сот других процессов, которые тоже хотят обслуживания и выполняют порой более важные действия с точки зрения системы, то это впечатление проходит. :)

Цитата(Ignes @ 19.11.2010, 11:30) *
Вот если бы он хотя бы работал под *nix-системой, подошел бы мне. А так - Only Win :(

Ну в *nix системах есть: sleep, usleep, nanosleep....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 13:46