Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Time Delay in C++Builder 4 or 5

Ответить
Настройки темы
Time Delay in C++Builder 4 or 5

Аватара для Guest

Guest



Профиль | Цитировать


Нужна задержка с точностью 0.1 сек по крайней мере

Отправлено: 12:01, 27-12-2002

 

Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Задержку с такой точностью реально организовать обычным Sleep().

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 12:09, 27-12-2002 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Guest

Guest


Профиль | Цитировать


Sleep не позволяет на самом деле делать задержки менее 37 милисекунд. Даже если ему поставить 1 мсек - то реально будет 37 или более!!! Как быть???

Отправлено: 12:27, 27-12-2002 | #3


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Guest
0,1 с - это 100 мс, так что аккуратнее (кроме того, 37 или нет - зависит от очень многих факторов, включая прежде всего версию операционной системы).

1) Какую задержку надо и с какой точностью она должна отмеряться?
2) На каких системах это должно работать.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 13:18, 27-12-2002 | #4


Аватара для Guest

Guest


Профиль | Цитировать


1. Задержка нужна с точностью 10 мсек.
2. Хорошо бы чтоб на всех, но для начала Win2000, NT4. Но желательно знать как бороться с этой проблемой во всех операционных системах.
Спасибо

Отправлено: 22:15, 27-12-2002 | #5


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Guest
Для таких задержек можно использовать WaitableTimer или даже обычный, если заюзать код ниже.

Еще раз, величина задержки и точность ее отмеривания - разные вещи. Ясно, что величина больше, чем точность, но можно задаться целью отмерять задержки в 1 секунду с точностью 1 мс, то есть, выполнение будет происходить через 1 секунду +- 1 мс. А у вас 10 мс - это видимо величина задержки (интервал), с какой точностью его надо отмерять?

Еще советую (для NT) выполнить такой код:

Код: Выделить весь код
#define NTSTATUS int
#define STATUS_SUCCESS 0
#define NTAPI __stdcall

NTSTATUS
NTAPI
ZwQueryTimerResolution
(OUT PULONG CoarsestResolution,
OUT PULONG FinestResolution,
OUT PULONG ActualResolution);

NTSTATUS
NTAPI
ZwSetTimerResolution
(IN ULONG RequestedResolution,
IN BOOLEAN Set,
OUT PULONG ActualResolution);

ULONG ActualResolution;
ULONG MinimumResolution;
ULONG MaximumResolution;

if (ZwQueryTimerResolution(&MinimumResolution,&MaximumResolution,&ActualResolution) == STATUS_SUCCESS)
ZwSetTimerResolution(MinimumResolution, TRUE, &ActualResolution);
Приведены описания фунций, они из ntdll.dll и есть во всех NT-системах.
Устанавливает разрешение системного таймера для текущего процесса на минимально возможное (в большинстве случаев - 1 мс).

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 13:23, 30-12-2002 | #6


Старожил


Сообщения: 163
Благодарности: 0

Профиль | Отправить PM | Цитировать


Странно, а как же квант времени, выделяемый на одну задачу? Еще меньше кванта? Я то боролся по старинке с этим. Запускал фоновый процесс на 2 сек, который считал количество пустых циклов и потом считал, что это быстродействие компьютера, а там где задержка - циклов меньше, естественно.  Тупо но работало и меньше 1 мс

-------
"Сколь бы сложной ни казалась проблема на первый взгляд, она, если правильно к ней подойти, окажется еще более сложной" - Пол Андерсон


Отправлено: 07:01, 14-01-2003 | #7


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Crew
Только такие решения систему грузят.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 10:51, 14-01-2003 | #8


Старожил


Сообщения: 163
Благодарности: 0

Профиль | Отправить PM | Цитировать


vasketsov
Цитата:
int __stdcall ZwSetTimerResolution(...
int __stdcall ZwSetTimerResolution(....
Откуда-то экспортируются, а откуда? или я неправильно понял?
А что за тип данных PULONG ? Я такого не встречал еще.


[s]Исправлено: Crew, 5:55 15-01-2003[/s]

-------
"Сколь бы сложной ни казалась проблема на первый взгляд, она, если правильно к ней подойти, окажется еще более сложной" - Пол Андерсон


Отправлено: 05:53, 15-01-2003 | #9


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Crew
1) из ntdll.dll, написано внизу сообщения.
2) PULONG - указатель на ULONG.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 11:45, 15-01-2003 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Time Delay in C++Builder 4 or 5

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - run-time error иоанн Программирование и базы данных 2 02-10-2012 19:44
Mipko Time Sheriff 1.20 OSZone Software Новости программного обеспечения 0 15-10-2009 16:30
Delay: 58440ms chameleonfeo Видео и аудио: обработка и кодирование 4 23-11-2006 20:59
Time в W2003 Paaxaan Microsoft Windows NT/2000/2003 13 18-11-2005 09:58
Wheel of Time himik Игры 2 27-02-2003 10:00




 
Переход