SOLUTION : Задержка
От: old->*Plutonia_Experiment() Беларусь http://blogs.rsdn.org/ikemefula
Дата: 09.12.02 15:41
Оценка: 16 (3)
Привет !

Нашел довольно экстремальный способ создания задержки :

QueryPerfomanceCounter имеет точность 8 микросекунд.

Функция сразу лезет в kernel32, оттуда сразу в ntdll а оттуда в ntoskrnl32.

Там идет опрос порта таймера, что занимает фиксированное количество времени(это зависит от порта) и не прерывается.

Вызов этот занимает от 3500 до 4500 тактов процесора в среднем.

Следовательно, задержка будет примерно 4 микросекунды.

Как проверить ?

В топике про папоротник Sleep не помогает — слишком мелденно на Sleep(1) и слишком быстро на Sleep(0). А десяток вызовов QueryPerfomanceCounter очень четко дозируют.

Можно и цикл путой самому организовать — но это надо подгонять самому под процесор.

Во время одного кванта очень хорошо дозирует — пробуйте.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.