crossplatform.ru

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


  Ответ в Задержка в миллисекундах
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
BRE Дата 19.11.2010, 11:52
 
Цитата(Ignes @ 19.11.2010, 11:30) *
Чтобы создать банальную задержку в цикле надо такие костыли изобретать :blink:

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

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

Ну в *nix системах есть: sleep, usleep, nanosleep....
Ignes Дата 19.11.2010, 11:30
  Вот теперь не знаю - то ли смеяться, то ли горевать...

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

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

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


Вот если бы он хотя бы работал под *nix-системой, подошел бы мне. А так - Only Win :(
Iron Bug Дата 19.11.2010, 10:16
  выйдет точно, если смотреть сюда
там и разные варианты рассмотрены, и кроссплатформенные решения.
у меня работает под вендой с точностью до 100-200 микросекунд, под линём с точностью до 8-10 микросекунд.
если нужна только венда и не очень высокая точность(плюс-минус несколько миллисекунд), то смотри вендозные мультимедиа таймеры, у них разрешение миллисекундное (это для последних вендов, начиная с 2K).
если хочешь скорости - не используй веднозный Sleep: у него квантование около 15 миллисекунд.
Алексей1153 Дата 19.11.2010, 7:47
  Ignes, таким образом задержку точно не сделаешь нормально. А пустой цикл оптимизатор вообще выкинет, скорее всего

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

но ТОЧНО всё равно не выйдет :)
Ignes Дата 19.11.2010, 1:28
  Простите, не в том разделе тему опубликовал. Сам в шоке. Буду признателен за перенос в нужный раздел.
Ignes Дата 19.11.2010, 0:57
  Понадобилось сделать в теле цикла на каждом шаге задержку в 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:

Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 16:23