22.09.2006, 12:53
общий
это ответ
Здравствуйте, Sha_Lun!
Решение, предложенное ADSota, конечно, будет работать, но у него есть
два недостатка:
1) привязано к частоте CPU
2) загрузка процессора становится равной 100%. Что особенно станет заметно при
достаточно больших задержках и частом их употреблении.
Хотя при редких и малых задержках - вполне приемлемое решение
При задержках >= 1 мс лучше использовать мультимедийный таймер
timeBeginPeriod(1) ; // где-то в начале инициируем таймер
...
timeSetEvent(1, // 1 мс
1,
(LPTIMECALLBACK)heMTimer, // событие, которое взведется по истечению времени
0,
TIME_ONESHOT | TIME_CALLBACK_EVENT_SET) ;
WaitForSingleObject (heMTimer, INFINITE) ; // ждем событие
Есть еще вариант - использовать Sleep(dwMsCount), но эту функцию можно использовать при значениях, больших 10 мс.
Да и работает с большой погрешностью. Не надо забывать, что Windows - это не
система реального времени...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен